任何人都可以使用SQL Plus帮助我使用“case”语句的正确语法吗?
Select
sum(case "REQUEST AGE" when >= 60 then 1 else 0) as "60+ Days",
sum(case "REQUEST AGE" when >= 30 and case when "REQUEST AGE" < 60 then 1 else 0) as "30- 60 Days",
sum (case "REQUEST AGE" when < 30 then 1 else 0) as "Less Than 30 Days",
"SECTOR"
FROM Schema.APPDATA
Where Schema.APPDATA."SECTOR" like '%X%'
我对SQL比较陌生,我从来没有写过这样的查询。我希望列请求年龄大于60,30到60之间以及小于30的情况总和为3列按列扇区分组
答案 0 :(得分:1)
每个CASE
语句必须以END
内的()
终止。您可以在此处使用CASE WHEN <condition> THEN
语法:
Select
sum(case when "REQUEST AGE" >= 60 then 1 else 0 END) as "60+ Days",
/* And in here, don't repeat the CASE keyword. Both parts of the expression are connected by AND */
sum(case when "REQUEST AGE" >= 30 and "REQUEST AGE" < 60 then 1 else 0 END) as "30- 60 Days",
sum (case when "REQUEST AGE" < 30 then 1 else 0 END) as "Less Than 30 Days",
"SECTOR"
FROM Schema.APPDATA
Where Schema.APPDATA."SECTOR" like '%X%'
答案 1 :(得分:1)
您需要使用CASE WHEN [expression]... THEN
而不是CASE [variable] WHEN [value] THEN ...
:
Select
sum(case WHEN "REQUEST AGE" >= 60 then 1 else 0 end) as "60+ Days",
....
此外,count
似乎比sum
更适合您的情况 - 您根本不需要else
。