我正在尝试执行一个案例陈述,如果特定项目的所有记录都包含所有团队的特定值,那么项目将被归类为我认为合适的方式。
的内容case when (COUNT(team_Name) = (SUM(status = 'Completed')) then 'Complete'
case when (COUNT(team_Name) = (SUM(status = 'On Hold')) then 'On hold'
case when (COUNT(team_Name) = (SUM(status = 'Pending')) then 'Pending'
else 'In Progress' end
所以我试图获得(status =' Completed')的总和,我认为这是一个匹配team_names计数的布尔语句。我的思维过程是,如果团队名称的数量和“完成”的数量是多少。状态相同,然后项目将被视为完成'。
所以选择分组是Project - >团队 - >状态 - >案件陈述的结果。我想在连接中使用上面的case语句,因此case语句在项目级别上产生聚合或沿着这些行的某些东西。
但是,我的语法似乎与上面的语句略有不同,我无法通过此方式运行查询。我在' ='附近收到错误的语法错误。对于(状态='已完成')方。
这在SQL中是否可行,或者是否需要更改。
答案 0 :(得分:2)
试试这个:
case COUNT(team_Name)
when SUM(CASE WHEN status = 'Completed' THEN 1 END) then 'Complete'
when SUM(CASE WHEN status = 'On Hold' THEN 1 END) then 'On Hold'
when SUM(CASE WHEN status = 'Pending' THEN 1 END) then 'Pending'
else 'Abandoned' end
答案 1 :(得分:0)
您可以使用Decode Function实现此功能。它像IF-THEN-ELSE条件一样工作。
给你一个例子:
Select YourFieldAliasName =
CASE TEAM_ID
WHEN 'Completed' THEN 'Complete'
WHEN 'On Hold' THEN 'Complete'
WHEN 'Pending' THEN 'Pending'
ELSE 'Abandoned'
END
如果所有其他条件都失败,则抛弃其他情况。