さまざまな州で使用されるアプリケーションのレポートをいくつか作成しています。データベースは非常に大きくなる可能性があります。列の合計を取得するための最良の方法を知りたいのですが。
現在、次のようなSQLがあります。
SELECT count(case when prg.prefix_id = 1 then iss.id end) +
count(case when prg.prefix_id = 2 then iss.id end) as total,
count(case when prg.prefix_id = 1 then iss.id end) as c1,
count(case when prg.prefix_id = 2 then iss.id end) as c2
FROM dbo.TableName
WHERE ...
ご覧のとおり、列は2回あります。1つの例では、それらを追加して合計を表示し、もう1つの例では、レポートに必要な個々の値を表示します。
これはSQLの非常に小さなサンプルであり、20以上の列があり、それらの列のうち4つ以上が時々合計されます。
いくつかの@Parametersを宣言し、各列を@Parameterに等しく設定することを考えていたので、列の合計を表示するために必要な@Parametersを合計することができます。IE:SET @Total = @c1 + @c2
しかし、SQL Serverエンジンは、そのように列が複数回存在することさえ気にしますか?これを行うためのより良い方法はありますか?