繁体   English   中英

SQL Server数据显示月份的开始和一年的结束

[英]SQL Server data display for month start and end of a year

我在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。 如果某个月不存在,则应显示为上表。

在结果表中,是吗

<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 )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM