最近、SQL Server2008を使って、SQLを改修する仕事をガッツリやってます。
改修するにあたって、色々調査したなか、T-SQLには色々な機能があるのを知りました。
(もちろんOracleとかにもあると思いますが)
とりあえず採用を決めたのはMERGE文とPIVOT、UNPIVOT文です。
MERGE文は、指定した条件に応じて、INSERTしてくれたり、UPDATEしてくれたりします。
今までは、わざわざSELECTして存在チェックしていたものが、1SQLで済むようになります。
割りと長い一文になっちゃうのですが、SELECTするのに比べたら、可読性もいいのでオススメです。
PIVOT、UNPIVOT文は、表計算でよくある、行列の入れ替えとかです。
よく使っているはUNPIVOTです。
横持ちでデータを持ってたりするテーブルを、
キー、フィールド名、値
といった表にすることができます。
UNIONとかでガシガシ結合してたのですが、かなり効率の良さそうなSQLを組めるようになりました。
ちなみにPIVOTの方はまだ使ってません…
T-SQL特有の機能だと、DBMSを変える時に困る可能性もありますが、そのマイナスをカバーするくらいの、便利な機能だと思います。
そういえば、次のSQL Serverでは、ページ処理に対応した機能(n行目からm行目を選択)とか、また色々な機能が追加されるようです。
他に便利な構文があったら、是非とも教えてもらいたいです。