TOP句を使って複雑なSQLを簡単にします。
TOP句で変数を使ってSQLを1行にする
TOP句を使って複雑なSQLを簡単にします。
SELECTで取得する最大行数を切り替えてみる
EXCELに出力する場合と画面に出力する場合でSELECTで取得する最大行数を切り替えたかったのですが、これまではSQLServerのT-SQLでTOP句の値が動的に変えれないと思っていたので、SQLを
IF out_souce = 'EXECL' --EXECに出力 BEGIN SELECT TOP 65001 * FROM test_table END ELSE --画面に出力 BEGIN SELECT TOP 1001 * FROM test_table END
のようにIF文で切り分けていたのですが、これでは長いSQLや条件が複雑なSQLもTOP句の値が違うだけで2つ書かなければならずメンテナンス性に欠けます。
しかしながらいつの間にかできるようになっているみたいです
DECLARE @get_cnt AS INT = 0 IF out_souce = 'EXECL' --EXECに出力 BEGIN Select @get_cnt = 65001 END ELSE --画面に出力 BEGIN Select @get_cnt = 1001 END SELECT TOP ( @get_cnt ) * FROM test_table
というように「( )」で囲んでやると行けます。
なんと簡単な。
これで複雑なSQLでも1行で書けるのでメンテナンス性がグッと上がります。