PG.Lib

アプリ開発関連とかガジェット関連とか

T-SQL特有の関数

最近、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行目を選択)とか、また色々な機能が追加されるようです。

他に便利な構文があったら、是非とも教えてもらいたいです。