数値は SUM() 関数で集計、文字列を集計的に結合するには( Transact-SQL で aggregate concatenation )
30要素のマスタから出力フラグの要素を取り出して、それに対するデータを読み出して、最大25カラムの帳票を出力する。帳票出力は整形の都合上1カラムに文字列結合する。
すべてのカラムに対して30回づつ条件判断をさせるので、明らかにパフォーマンスが悪い。(平均15ms*25カラム)。帳票の行数は数千行なので、とんでもない。SQLのパフォーマンスをよくしたいとか言われてヒントになりそうなモノをメモ
テーブル変数に出力フラグの立っているマスタ要素をINSERTして、CASE式でデータを関連づける(1要素1行)。んで、テーブル変数の行数分だけ整形して出力すればOK?
マスタ要素とデータを関連づけるループがパフォーマンスに影響でそうかも…。コード書いてみないと何ともできんが、5000行を超えるストアドに手を入れるのは泣きそうね。

コメントする