Jos*_*hua 24 sql-server select case-when
我已广泛搜索此网站但无法找到解决方案.
以下是我的查询示例:
SELECT
ActivityID,
Hours = (CASE
WHEN ActivityTypeID <> 2 THEN
FieldName = (Some Aggregate Sub Query),
FieldName2 = (Some other aggregate sub query)
WHEN ActivityTypeID = 2 THEN
FieldName = (Some Aggregate Sub Query with diff result),
FieldName2 = (Some Other Aggregate Sub Query with diff result)
END)
Run Code Online (Sandbox Code Playgroud)
显然我遗漏了很多查询,我只想看看是否可能.
我知道我可能只做两次"CASE",但我想我会问......
Jos*_*son 28
问题是该CASE声明不会以您尝试使用它的方式工作.您只能使用它来切换查询中一个字段的值.如果我理解你要做什么,你可能需要这个:
SELECT
ActivityID,
FieldName = CASE
WHEN ActivityTypeID <> 2 THEN
(Some Aggregate Sub Query)
ELSE
(Some Aggregate Sub Query with diff result)
END,
FieldName2 = CASE
WHEN ActivityTypeID <> 2 THEN
(Some Aggregate Sub Query)
ELSE
(Some Aggregate Sub Query with diff result)
END
Run Code Online (Sandbox Code Playgroud)
Pet*_*ney 13
不,CASE是一个函数,只能返回一个值.我想你将不得不复制你的CASE逻辑.
另一种选择是用IF包装整个查询,并有两个单独的查询来返回结果.没有看到查询的其余部分,很难说这是否适合您.
| 归档时间: |
|
| 查看次数: |
94582 次 |
| 最近记录: |