ここで一時テーブルを実装していることをよりよく理解するために、where句に基づいていくつかの列の合計を実行する必要があります
declare @tbl table(a int ,b int,c int)
insert into @tbl values(1,2,3)
insert into @tbl values(2,2,3)
insert into @tbl values(1,3,1)
insert into @tbl values(1,2,3)
insert into @tbl values(1,2,3)
そして、a、b、cの値のa、b、cob基底の合計を見つけるために; 私は次のクエリを使用しています
SELECT (
SELECT SUM(a) from @tbl where a=1
)AS a ,
(SELECT SUM(b) from @tbl where b=2
)AS b ,
(SELECT SUM(c) from @tbl where c=3
)AS c
私は私の友人の一人にこの仕事のために一行の質問をするように頼みます、そして彼は私に次の行を提案します
select sum((case when a=1 then a else null end)),
sum((case when b=2 then b else null end)),
sum((case when c=3 then c else null end))
from @tbl
今、27の列と数百万のレコードがある場合に、より高速に動作するパフォーマンスについて考えていますか?
または、これを達成するための他の方法で、これら2つよりもパフォーマンスが大幅に向上します。