在CASE语句中未对温度场INT(11)求和:
SELECT storenumber as storenumber,
SUM((CASE temperature WHEN temperature < 0 THEN SumOfTotalPrice ELSE 0 END)) AS Under0,
SUM((CASE temperature WHEN temperature BETWEEN 0 AND 20 THEN SumOfTotalPrice ELSE 0 END)) AS `0To20`,
SUM((CASE temperature WHEN temperature BETWEEN 21 AND 30 THEN SumOfTotalPrice ELSE 0 END)) AS `21To30`,
SUM((CASE temperature WHEN temperature BETWEEN 31 AND 40 THEN SumOfTotalPrice ELSE 0 END)) AS `31To40`,
SUM((CASE temperature WHEN temperature BETWEEN 41 AND 50 THEN SumOfTotalPrice ELSE 0 END)) AS `41To50`,
SUM((CASE temperature WHEN temperature BETWEEN 51 AND 60 THEN SumOfTotalPrice ELSE 0 END)) AS `51To60`,
SUM((CASE temperature WHEN temperature BETWEEN 61 AND 70 THEN SumOfTotalPrice ELSE 0 END)) AS `61To70`,
SUM((CASE temperature WHEN temperature BETWEEN 71 AND 80 THEN SumOfTotalPrice ELSE 0 END)) AS `71To80`,
SUM((CASE temperature WHEN temperature BETWEEN 81 AND 90 THEN SumOfTotalPrice ELSE 0 END)) AS `81To90`,
SUM((CASE temperature WHEN temperature > 90 THEN SumOfTotalPrice ELSE 0 END)) AS `Over90`
FROM `reconciled`.totalsalesbystoreandtemperature
GROUP BY storenumber
答案 0 :(得分:2)
您需要将所有CASE WHEN ...
部分更改为CASE temperature WHEN temperature BETWEEN 31 AND 40 THEN
,如下所示:
CASE WHEN temperature BETWEEN 31 AND 40 THEN
更改为
CASE
当前,temperature
试图将WHEN
列与false
语句中给出的逻辑测试结果进行比较。由于这些类型不同,因此您不断得到0
和{{1}}的结果。