0

ピックアップテーブルがあり、1 年間の各月のピックアップ数を示すレポートを作成しようとしています。
このように見えるはずです
ここに画像の説明を入力

私はこれまでのところこれを持っています

  SELECT
DATEPART(MONTH, PickupDate)as 'Month',
count (CASE WHEN DATEPART(YEAR, PickupDate) = 2012 THEN 1 ELSE 0 end)as 'Pickups'
,count (CASE WHEN CategCode  = 'NB' and DATEPART(YEAR, PickupDate) = 2012  THEN 1 ELSE 0 end) as 'Newborn'
FROM dbo.Pickup 
where DATEPART(YEAR, PickupDate) = 2012
group by DATEPART(MONTH, PickupDate)

WITH ROLLUP

Newborn 列の計算方法がわかりません。アイデアはありますか? これまでの私のクエリは正しく計算されず、ピックアップテーブルからすべてのピックアップをカウントするだけです。
ここに画像の説明を入力

4

1 に答える 1

1

に変更COUNTするSUMか、 を に変更ELSE 0ELSE NULLます。

COUNT(0,1,0)= 3、SUM(0, 1, 0)= 1、COUNT(NULL,1,NULL)= 1

別のヒントを提供できる場合は、DATEPART 関数ではなく日付比較を使用してクエリを書き直してみてください。この関数を使用すると、オプティマイザーがインデックスを利用できなくなります。カレンダーテーブルはここに行く方法です。

于 2013-03-20T04:28:04.383 に答える