where句でこの条件に与える適切な名前がわかりません。私はMicrosoft SQL Server 2008を使用しています。where句にサブ条件を追加する
基本的には、次の列の注文表があります。
MyOrderTable:現在
OrderAmount Paid OrderDate
100 Y 2016-08-10 21:15:52.000
120 N 2016-08-10 20:15:12.000
300 Y 2016-08-09 11:10:22.000
500 Y 2016-06-09 10:10:54.000
125 N 2016-06-09 09:15:13.000
325 N 2015-11-09 09:15:13.000
、私は次のSQLクエリを持っている:
SELECT DATEPART(Year, OrderDate) TheYear, DATEPART(Month, OrderDate) TheMonth,
SUM(ISNULL(OrderAmount, 0)) as SumOrderAmount
FROM MyOrderTable
WHERE YEAR(OrderDate) = 2016
GROUP BY DATEPART(Year, OrderDate), DATEPART(Month, OrderDate)
ORDER BY TheYear, TheMonth
結果は、上記のSQLから返されるには、以下のようなものです:
TheYear TheMonth SumOrderAmount
2016 6 625
2016 8 520
どのようにすることができます私はまた行が支払われているSumOrderAmountを照会します= 'Y'?私はSQLから次のものを返す:
TheYear TheMonth SumOrderAmount PaidSumOrderAmount
2016 6 625 500
2016 8 520 400
どうすればいいですか?どんな助けでも大歓迎です。ありがとうございました。
だからそれは言われた後、彼はあまりにも '0' ELSEを必要としません:) – sagi
@sagiを。 。 。 Au contraire。これは、マッチがないときに「NULL」値を防止するために必要です。なぜなら、月には支払額がないと仮定するのが妥当であるからです。一方、1ヶ月間の支払い金額がすべて「NULL」だった場合は、合計金額も必要になります。提供されたデータを考えると、そうは思われません。 –
OPに有料の売上がない月がある場合は、おそらく0ではなくNULL値よりも大きな問題です。 – jarlh