【问题标题】:Construct a grouping column in SQL Server 2012在 SQL Server 2012 中构造分组列
【发布时间】:2016-09-23 04:26:48
【问题描述】:

我创建了一个如下所示的表:

ID   TSPPLY_DT    NEXT_DT     DAYS_BTWN   TIME_TO_EVENT   CENSORED   ENDPOINT
-----------------------------------------------------------------------------
1    2014-01-01   2014-01-10      10            10             0          0 
1    2014-01-10   2014-01-21      11            21             0          0 
1    2014-01-21     NULL         NULL           21             1          0     
2    2015-04-01   2015-04-30      30            30             0          0
2    2015-04-30   2015-05-03       1            31             0          1
2    2015-05-03   2015-05-06       3            34(should be 3)0          0
2    2015-05-06   2015-05-16      10            44(shouldbe 13)1          0

但是,TIME_TO_EVENT 列与我的代码没有正确相加 - 我们的想法是在 ID 更改、CENSORED = 1 或 ENDPOINT = 1 之间的天数相加。

我认为我需要一个加法列,我可以根据IDGROUPING 的聚合求和...输出如下:

ID   TSPPLY_DT    NEXT_DT     DAYS_BTWN   TIME_TO_EVENT   CENSORED   ENDPOINT   GROUPING
----------------------------------------------------------------------------------------
1    2014-01-01   2014-01-10      10            10             0          0          A 
1    2014-01-10   2014-01-21      11            21             0          0          A 
1    2014-01-21     NULL         NULL           21             1          0          A     
2    2015-04-01   2015-04-30      30            30             0          0          A
2    2015-04-30   2015-05-03       1            31             0          1          A
2    2015-05-03   2015-05-06       3            3              0          0          B
2    2015-05-06   2015-05-16      10            13             1          0          B

那么关于如何创建GROUPING 列的任何想法?就像如果下一行ID 与当前行相同,请检查CENSOREDENDPOINT。如果其中一个 = 1,则对于下一行,将分组更改为新值。到达新的ID 后,将grouping 重置为 A(或任何任意值)并再次运行测试。

【问题讨论】:

    标签: sql sql-server-2012-express


    【解决方案1】:

    你需要使用DATEDIFF函数,像这样:

    DATEDIFF(d, TSPPLY_DT, NEXT_DT) AS DAYS_BTWN
    

    现在您不需要GROUP BY

    【讨论】:

    • 谢谢,但我的专栏 DAYS_BTWN 运行正常。问题特别在 TIME_TO_EVENT 列中 - 如果您看到第一个数据示例,我已经评论了错误加起来的行。
    猜你喜欢
    • 2020-04-10
    • 2016-05-26
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 2014-10-29
    • 2013-12-13
    • 1970-01-01
    相关资源
    最近更新 更多