「SQL Fix」を紹介したついでに、私がSQLを書く際のフォーマットをご紹介。
  
 基本的なルールは、以下の5つ。
  - SELECT、FROM、WHEREなどのキーワードは、単品で1行。  
- 「,」、AND、ORなどの接続系のものは行頭に配置。  
- 1カラム1行。  
- SELECT、UPDATE ~ SET等の後のカラム列挙はインデントなし。  
- 副問い合わせなど()で囲まれた箇所は1レベルインデント。
 
 具体的な例は以下の通り。(Syntax Hightlighterだとうまく表示できなかったので、ただのpreタグにて)
 SELECT
 IV.Col1
,IV.Col2
,IV.ColName
FROM
 (
  SELECT
   T1.Col1
  ,T1.Col2
  ,T2.ColName
  FROM
   Table1 T1
     INNER JOIN Table2 T2 ON
           T2.Col1 = T1.Col1
       AND T2.Col2 = T1.Col2
  WHERE
      T1.Col1 = 'hoge'
  AND (
          @Fuga IS NULL
      OR  T1.Fuga = @Fuga
      )
  ORDER BY
   T1.DispOrder
 ) IV
 
入社後から6年間。色々と試行錯誤してきて、最終的に今の形に落ち着きました。
特に2の接続系のものを行頭に持ってくるというのは、仕様変更でカラム追加となった場合、たとえば「,」を行末にしていると、1行変更1行追加となってしまってどうも嫌だったので、1行追加で済む今の形が気に入っています。
 
例をあげると以下の通り。
 
行末の場合
こんなのに
SELECT
  Col1,
  Col2
FROM
 ~
Col3を追加したい
SELECT
  Col1,
  Col2,  -- 変更
  Col3   -- 追加
FROM
 ~
行頭の場合
こんなのに
SELECT
 Col1
,Col2
FROM
 ~
Col3を追加したい
SELECT
 Col1
,Col2
,Col3  -- 追加
FROM
 ~
 
SQLのフォーマットは、結構人によってまちまちで、それぞれこだわりがあって使っているような気がします。
皆さんはどんなSQLフォーマットを使っていますか?