2017-11-03 15 views
-1

私のような質問があるはずです。私は質問を見つけることができないようだ、この質問をおかけして申し訳ありません。以下はSUMグループのSQLケースステートメント

が私のテーブル(SalesTransaction)以下のSQLクエリを使用して

ID |SalesID |Amount |AmountReceived |OutStanding |Paid 
2041 1000  600000 600000   0   1 
2042 1000  1500000 2000000  -500000  1 
2043 1000  900000 0    900000  0 
2047 1002  300000 0    300000  0 

です:

ID |SalesID |Amount |AmountReceived |OutStanding |Paid |BalanceLastSch 
2041 1000  600000 600000   0   1  0.00 
2042 1000  1500000 2000000  -500000  1  0.00 
2043 1000  900000 0    900000  0  -500000 
2047 1002  300000 0    300000  0  -500000 

私は以下のように手に入れたいもの:

SELECT ID, 
     SalesID, 
     Amount, 
     AmountReceived, 
     OutStanding, 
     Paid, 
     (CASE 
      WHEN Paid = 0 THEN (SELECT SUM(OutStanding) 
           FROM SalesTransaction 
           WHERE Paid = 1) 
     ELSE 0 END) AS BalanceLastSchedule 
FROM dbo.SalesTransaction 
GROUP BY ID, SalesID, Amount, AmountReceived, OutStanding, Paid 

私は以下のような結果を得ます:

ID |SalesID |Amount |AmountReceived |OutStanding |Paid |BalanceLastSch 
2041 1000  600000 600000   0   1  0.00 
2042 1000  1500000 2000000  -500000  1  0.00 
2043 1000  900000 0    900000  0  -500000 
2047 1002  300000 0    300000  0  0.00 

私はこれについて助けを得る。ありがとう。

+1

どの[DBMS](https://en.wikipedia.org/wiki/ DBMS)製品を使用していますか? Postgres?オラクル? "_SQL_"はクエリ言語であり、特定のデータベース製品の名前ではありません。 –

+0

あなた自身の質問を削除することができます。 – melpomene

+0

あなたも編集できます – TheGameiswar

答えて

2

SalesIdとの合計を見つけるために内部クエリに参加していないため、間違った答えが表示されています。私はちょうどツアー内側のクエリ内の以下のsetionを追加し、GROUP BY句を削除

SELECT 
    SeqNo, 
SalesID, 
Amount, 
AmountReceived, 
OutStanding, 
Paid, 
ISNULL((CASE 
      WHEN Paid = 0 THEN (SELECT SUM(OutStanding) 
           FROM SalesTransaction 
           WHERE Paid = 1 
           AND SalesId = T.SalesId) 
     ELSE 0 END),0.00) AS BalanceLastSchedule 
    FROM SalesTransaction T; 

スクリプトの下にこれを試してみてください

AND SalesId = T.SalesId 
+0

Wow !!ありがとう。私はそれを見逃しているようだ。私が最後に試したのは、私はSalesID = SalesIDを作ってしまい、それは動作しません。もう一度Jayasurya Satheeshに感謝します。 :) – hafiz

+0

いつも歓迎です –

関連する問題