次のような値を持つテーブルがあります。
Date(in YMD) Column1 Column2
2013-08-08 0 6
2013-08-08 1 87
2013-08-08 2.8 23
2013-08-08 3.87 12
2013-08-08 0.111 65
2013-08-08 5 98
2013-08-08 7.876 67
2013-08-09 4.32 8
2013-08-09 4 2
2013-08-09 76.05 100
2013-08-09 32 9
column1 の範囲で column2 の合計を取得したい (つまり、column1 の範囲にある column2 の値を追加する)。したがって、結果は次のようになります。
[0-1] 158
[1-2] 0
[2-3] 23
[3-4] 14
[4-5] 106
[5-6] 0
[6-7] 0
[7-8] 67
[8-9] 0
[10+] 109
最初は、以下のクエリでこの結果を取得していましたが、正常に機能していました。
SELECT [Range], [TotalSum] FROM
(
SELECT
CASE WHEN Column1 >= 0 AND Column1 <= 1 THEN '[0-1]'
WHEN Column1 > 1 AND Column1 <= 2 THEN '[1-2]'
WHEN Column1 > 2 AND Column1 <= 3 THEN '[2-3]'
WHEN Column1 > 3 AND Column1 <= 4 THEN '[3-4]'
WHEN Column1 > 4 AND Column1 <= 5 THEN '[4-5]'
WHEN Column1 > 5 AND Column1 <= 6 THEN '[5-6]'
WHEN Column1 > 6 AND Column1 <= 7 THEN '[6-7]'
WHEN Column1 > 7 AND Column1 <= 8 THEN '[7-8]'
WHEN Column1 > 8 AND Column1 <= 9 THEN '[8-9]'
WHEN Column1 > 9 AND Column1 <= 10 THEN '[9-10]'
ELSE '[10+]' END [Range],
SUM(Column2) [TotalSum]
FROM dbo.table
GROUP BY
CASE WHEN Column1 >= 0 AND Column1 <= 1 THEN '[0-1]'
WHEN Column1 > 1 AND Column1 <= 2 THEN '[1-2]'
WHEN Column1 > 2 AND Column1 <= 3 THEN '[2-3]'
WHEN Column1 > 3 AND Column1 <= 4 THEN '[3-4]'
WHEN Column1 > 4 AND Column1 <= 5 THEN '[4-5]'
WHEN Column1 > 5 AND Column1 <= 6 THEN '[5-6]'
WHEN Column1 > 6 AND Column1 <= 7 THEN '[6-7]'
WHEN Column1 > 7 AND Column1 <= 8 THEN '[7-8]'
WHEN Column1 > 8 AND Column1 <= 9 THEN '[8-9]'
WHEN Column1 > 9 AND Column1 <= 10 THEN '[9-10]'
ELSE '[10+]' END
) t1
ORDER BY
CASE [Range]
WHEN '[0-1]' THEN 0
WHEN '[1-2]' THEN 1
WHEN '[2-3]' THEN 2
WHEN '[3-4]' THEN 3
WHEN '[4-5]' THEN 4
WHEN '[5-6]' THEN 5
WHEN '[6-7]' THEN 6
WHEN '[7-8]' THEN 7
WHEN '[8-9]' THEN 8
WHEN '[9-10]' THEN 9
WHEN '[10+]' THEN 10
END
ここで、フィルターを適用する必要がある要件があります。たとえば、「'2013-08-09' と '2013-08-09' の間の日付」としますが、これは正しい値を返しますが、データが存在する範囲に対してのみです[3-4]、[4-5]、[10+]
すべての範囲を取得し、その範囲の行がない TotalSum 列に 0 を表示する方法があることを提案してください。
TotalSum 列の値を持つすべての範囲値を表示するには、このクエリでどのような変更を加える必要がありますか (その範囲の column2 の合計または 0 である必要があります)。
これを達成するための他のアイデアがあれば、提案してください。どんな助けでも大歓迎です。