SELECT COUNT(*) renshu, CASE WHEN AGE <= 10 THEN '1' WHEN AGE > 10 AND AGE <= 20 THEN '2' WHEN AGE > 20 AND AGE <= 30 THEN '3' WHEN AGE > 30 AND AGE <= 40 THEN '4' WHEN AGE > 40 AND AGE <= 50 THEN '5' WHEN AGE > 50 AND AGE <= 60 THEN '6' WHEN AGE > 60 AND AGE <= 70 THEN '7' WHEN AGE > 70 AND AGE <= 80 THEN '8' WHEN AGE > 80 AND AGE <= 90 THEN '9' WHEN AGE > 90 AND AGE <= 100 THEN 'a' WHEN AGE > 100 THEN 'b' END allshuju ,OUT_MAIN_DIAG_RST leibie FROM WORK_BASY_DATA where OUT_DT >= '2014-10-01' and OUT_DT <='2014-10-31' GROUP BY allshuju这段时间里没有100以上,怎么样让100也出来显示0
SELECT COUNT(*) renshu, CASE WHEN AGE <= 10 THEN '1' WHEN AGE > 10 AND AGE <= 20 THEN '2' WHEN AGE > 20 AND AGE <= 30 THEN '3' WHEN AGE > 30 AND AGE <= 40 THEN '4' WHEN AGE > 40 AND AGE <= 50 THEN '5' WHEN AGE > 50 AND AGE <= 60 THEN '6' WHEN AGE > 60 AND AGE <= 70 THEN '7' WHEN AGE > 70 AND AGE <= 80 THEN '8' WHEN AGE > 80 AND AGE <= 90 THEN '9' WHEN AGE > 90 AND AGE <= 100 THEN 'a' WHEN AGE > 100 THEN '0' END allshuju ,OUT_MAIN_DIAG_RST leibie FROM WORK_BASY_DATA where OUT_DT >= '2014-10-01' and OUT_DT <='2014-10-31' GROUP BY allshuju
语句里不是有WHEN AGE > 100 THEN 'b' 吗?“这段时间里没有100以上,怎么样让100也出来显示0”是什么意思?
你的语句能执行吗,应该会报错的吧?你没有把MAIN_DIAG_RST包括在GROUP BY里面,另外GROUP BY不能使用别名,执行下面的语句试试
SELECT COUNT (*) renshu
, CASE
WHEN MONTH(DocDate) = 1 THEN '1'
WHEN MONTH(DocDate) = 2 THEN '2'
WHEN AGE <= 10 THEN '1'
WHEN AGE > 10 AND AGE <= 20 THEN '2'
WHEN AGE > 20 AND AGE <= 30 THEN '3'
WHEN AGE > 30 AND AGE <= 40 THEN '4'
WHEN AGE > 40 AND AGE <= 50 THEN '5'
WHEN AGE > 50 AND AGE <= 60 THEN '6'
WHEN AGE > 60 AND AGE <= 70 THEN '7'
WHEN AGE > 70 AND AGE <= 80 THEN '8'
WHEN AGE > 80 AND AGE <= 90 THEN '9'
WHEN AGE > 90 AND AGE <= 100 THEN 'a'
WHEN AGE > 100 THEN 'b'
END allshuju
, OUT_MAIN_DIAG_RST leibie
FROM WORK_BASY_DATA
WHERE OUT_DT >= '2014-10-01' AND OUT_DT <= '2014-10-31'
GROUP BY (CASE
WHEN MONTH(DocDate) = 1 THEN '1'
WHEN MONTH(DocDate) = 2 THEN '2'
WHEN AGE <= 10 THEN '1'
WHEN AGE > 10 AND AGE <= 20 THEN '2'
WHEN AGE > 20 AND AGE <= 30 THEN '3'
WHEN AGE > 30 AND AGE <= 40 THEN '4'
WHEN AGE > 40 AND AGE <= 50 THEN '5'
WHEN AGE > 50 AND AGE <= 60 THEN '6'
WHEN AGE > 60 AND AGE <= 70 THEN '7'
WHEN AGE > 70 AND AGE <= 80 THEN '8'
WHEN AGE > 80 AND AGE <= 90 THEN '9'
WHEN AGE > 90 AND AGE <= 100 THEN 'a'
WHEN AGE > 100 THEN 'b'
END),
OUT_MAIN_DIAG_RST
上面的语句忘了把测试数据删了,试试下面的
SELECT COUNT (*) renshu
, CASE
WHEN AGE <= 10 THEN '1'
WHEN AGE > 10 AND AGE <= 20 THEN '2'
WHEN AGE > 20 AND AGE <= 30 THEN '3'
WHEN AGE > 30 AND AGE <= 40 THEN '4'
WHEN AGE > 40 AND AGE <= 50 THEN '5'
WHEN AGE > 50 AND AGE <= 60 THEN '6'
WHEN AGE > 60 AND AGE <= 70 THEN '7'
WHEN AGE > 70 AND AGE <= 80 THEN '8'
WHEN AGE > 80 AND AGE <= 90 THEN '9'
WHEN AGE > 90 AND AGE <= 100 THEN 'a'
WHEN AGE > 100 THEN 'b'
END allshuju
, OUT_MAIN_DIAG_RST leibie
FROM WORK_BASY_DATA
WHERE OUT_DT >= '2014-10-01' AND OUT_DT <= '2014-10-31'
GROUP BY (CASE
WHEN MONTH(DocDate) = 1 THEN '1'
WHEN MONTH(DocDate) = 2 THEN '2'
WHEN AGE <= 10 THEN '1'
WHEN AGE > 10 AND AGE <= 20 THEN '2'
WHEN AGE > 20 AND AGE <= 30 THEN '3'
WHEN AGE > 30 AND AGE <= 40 THEN '4'
WHEN AGE > 40 AND AGE <= 50 THEN '5'
WHEN AGE > 50 AND AGE <= 60 THEN '6'
WHEN AGE > 60 AND AGE <= 70 THEN '7'
WHEN AGE > 70 AND AGE <= 80 THEN '8'
WHEN AGE > 80 AND AGE <= 90 THEN '9'
WHEN AGE > 90 AND AGE <= 100 THEN 'a'
WHEN AGE > 100 THEN 'b'
END),
OUT_MAIN_DIAG_RST