我在SQL Server中有这样的数据:
MONTH_START | MONTH_END
-------------|-----------
01-2014 | 01-2014
02-2014 | 02-2014
03-2014 | 03-2014
05-2014 | 05-2014
08-2014 | 08-2014
10-2014 | 10-2014
11-2014 | 11-2014
12-2014 | 12-2014
如何汇总日期以获得以下内容:
MONTH_START | MONTH_END
-------------|-----------
01-2014 | 05-2014
08-2014 | 08-2014
10-2014 | 12-2014
最终显示应该是:如果数据中存在一年中的所有12个月,假设年份为2014年,则MONTH_START为01-2014,MONTH_END为12-2014。如果某个月不存在,则应显示如上表。
答案 0 :(得分:1)
在结果表中,是
<tr>
<td>09-2014</td>
<td>12-2014</td>
</tr>
或
<tr>
<td>10-2014</td>
<td>12-2014</td>
</tr>
您可以尝试以下查询来获得结果:
SELECT
MONTH_START,
MONTH_END = (
SELECT TOP 1
MONTH_START
FROM
MonthStartEnd
WHERE
DATEADD(MONTH, 1, CAST(REPLACE(MONTH_START, '-', '-01-') AS DATETIME)) NOT IN (
SELECT
CAST(REPLACE(MONTH_START, '-', '-01-') AS DATETIME)
FROM
MonthStartEnd )
AND CAST(REPLACE(MONTH_START, '-', '-01-') AS DATETIME) >= CAST(REPLACE(se.MONTH_START, '-', '-01-') AS DATETIME))
FROM
MonthStartEnd se
WHERE
DATEADD(MONTH, -1, CAST(REPLACE(MONTH_START, '-', '-01-') AS DATETIME)) NOT IN (
SELECT
CAST(REPLACE(MONTH_START, '-', '-01-') AS DATETIME)
FROM
MonthStartEnd )