我有一个简单的查询:
SELECT YEAR(P.DateCreated)
,MONTH(P.DateCreated)
,COUNT(*) AS cnt
FROM tbl1,
tbl2....
GROUP BY
MONTH(P.DateCreated)
,YEAR(P.DateCreated)
这将发出:
现在我需要相同的查询,但每年仅进行分组:
所以:
SELECT YEAR(P.DateCreated)
,COUNT(*) AS cnt
FROM tbl1,
tbl2....
GROUP BY
YEAR(P.DateCreated)
我不想想要进行 2 个查询。
有什么办法可以在这里进行条件group by
吗?
我可以一个被另一个替换,但我不能一个被两个替换...
GROUP BY
CASE WHEN @timeMode='y' THEN YEAR(P.DateCreated)
WHEN @timeMode='m' THEN MONTH(P.DateCreated), YEAR(P.DateCreated) end
有什么帮助吗?
最佳答案
您最好使用两个单独的查询,但可以这样做
GROUP BY YEAR(P.DateCreated),
CASE
WHEN @timeMode='m' THEN MONTH(P.DateCreated) end
如WHEN @timeMode <> 'm'
第二个GROUP BY
表达式将是 NULL
对于所有行并且不影响结果。
关于sql-server - sql server中的条件分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11177316/