【发布时间】:2013-10-16 14:58:52
【问题描述】:
我知道我想做什么,但我正在努力寻找最好的方法。
我有一个查询返回一些数据:
SELECT
[Description] As [Name], month([OccuredOn]) as [Month], year([OccuredOn]) AS [Year], COUNT([id]) AS Cnt
FROM MyTable
GROUP BY [Description], Year([OccuredOn]), Month([OccuredOn])
ORDER BY [Description],Year([OccuredOn]), month([OccuredOn])
问题是我需要将一些结果合并为一个。
以下是我想要做的,但我需要能够将 string1 和 string2 的记录合并到 string3 的单个记录中。
SELECT
CASE [Description]
WHEN 'String1' THEN 'String3'
WHEN 'String2' THEN 'String3'
ELSE [Description]
END As [Name],
month([OccuredOn]) as [Month], year([OccuredOn]) AS [Year], COUNT([id]) AS Cnt
FROM MyTable
GROUP BY [Description], Year([OccuredOn]), Month([OccuredOn])
ORDER BY [Description],Year([OccuredOn]), month([OccuredOn])
我知道上述方法不是这样做的,但希望有人能指出我可以返回结果的方法,其中任何带有 string1 或 string2 的描述作为该日期的单个唯一行返回,并累积计数。
上面的SQL显然返回了string1和string2的两批数据
谢谢
【问题讨论】:
-
您是否尝试过 group by
[Name]而不是 group by[Description]? -
我认为你应该检查 SELECT DISTINCT 而不是 GROUP BY
标签: sql sql-server-2008 merge case