SQL Plus“case”关键字

时间:2012-12-10 21:23:50

标签: sql

任何人都可以使用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列按列扇区分组

2 个答案:

答案 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