:私は値= 0の行を非表示にするが、合計の計算に、その他の列の値をカウント - 私はそのようなテーブル有するSQL2008
WaitingData
C1 C2 C3 Number
A B 1 10
A B 2 0
A B 3 4
X B 4 2
CompletedData
C1 C2 C3 Number
A B 1 5
A B 2 2
A B 3 0
X B 4 12
(C1-C2のVARCHAR(10)、C3-番号int)をこれは以下のように私に出力を与えている
Select wd.C1,wd.C2,wd.C3,wd.Number as NW,cdd.Number as NC
into #AllData
from (Select C1,C2,C3,sum(Number) from WaitingData group by C1,C2,C3) wd
outer apply (Select C1,C2,C3,sum(Number)
from CompletedData cd
where wd.C1=cd.C1 and wd.C2=cd.C2 and wd.C3=cd.C3
) cdd
Select * from #AllData
union
Select C1='Total',C2='Total',C3=-1, sum(NW),sum(NW)
from #AllData
:
C1 C2 C3 NW NC
A B 1 10 5
A B 2 0 2
A B 3 4 0
X B 4 2 12
Total Total -1 16 19
は、しかし、私は行THAを非表示にするデータを表現するには、以下のクエリを使用してtにはNWはありませんが、合計行を計算している間にその値に関する計算を行います(下記のNCを参照)。私が望む出力は次のようなものです:
C1 C2 C3 NW NC
A B 1 10 5
A B 3 4 0
X B 4 2 12
Total Total -1 16 19
このような出力を得る方法が見つかりませんでした。どんな助けでも大歓迎です!
------------------------------ EDIT -------------- -------------------------
------------------- ----------- EDIT -------------------------------------- - 私は以下のようなテーブル内のデータを持っている場合は、私がしたいように
は、外側が動作していない適用し、それはデータが含まれていませんA B 2.
WaitingData
C1 C2 C3 Number
A B 1 10
A B 3 4
X B 4 2
CompletedData
C1 C2 C3 Number
A B 1 5
A B 2 2
X B 4 12
そして、出力は次のように次のようになります。このような状況で
C1 C2 C3 NW NC
A B 1 10 5
A B 3 4 NULL
X B 4 2 12
Total Total -1 16 17
、私は最終的な結果にA B 2
である「2」NC値をカウントし、によって含まれるすべてのレコードを挿入を除いて、19ではなく17とNCを見るために何ができますCompletedDataでもWaitingDataですか?両方のテーブルからすべての値を取得するためにfull join
の使用:ラップ1以上の選択およびNWは= 0
select * from
(
Select * from #AllData
union
Select C1='Total',C2='Total',C3=-1, sum(NW),sum(NC)
from #AllData
) t
where NW <> 0
編集行を除外すると、最終的な結果
私はカントは、私がこれを参照してくださいcouldntのと信じています。私は黒いコーヒーが必要なようだ。ありがとう:) –
私は質問を編集し、もう一つ質問しました。あなたはそれについても考えていますか? @vkp –
私は両方のテーブルからすべての値を取得する '完全な結合 'を使用する必要がありますと信じています。 –