【问题标题】:Group by when table contains datetime columns按表包含日期时间列时分组
【发布时间】:2019-10-27 15:48:12
【问题描述】:

我有下表:

Id | OrderNO | QTY | Station |  DateSt             |  DateEd             | Status |  CreatedDt
1  |   200   |  30 |   ABC   |  10/19/2019 1:00pm  |  NULL               |  NULL  |  10/19/2019 1:00pm
2  |   200   |  30 |   ABC   |  NULL               |  NULL               |  NULL  |  10/19/2019 2:00pm
3  |   200   |  0  |   ABC   |  NULL               |  10/19/2019 3:00pm  |  End   |  10/19/2019 3:00pm

我想要做的是获取一个查询以显示 Qty 列的总和,并且仅显示具有初始日期和结束日期的行。像这样的:

OrderNO |  QTY  | Station |  DateSt            | DateEd            |  Status   |  CreatedDt
   200  |   60  |   ABC   |  10/19/2019 1:00pm | NULL              |   NULL    |  10/19/2019 1:00pm
   200  |   0   |   ABC   |  NULL              | 10/19/2019 3:00pm |   End     |  10/19/2019 3:00pm

目前,我有查询来按预期显示结果,但我没有使用 Dates 列,如果我添加这些列,查询显示的行数比我想要的多。这是我的查询:

SELECT OrderNO, SUM(QTY), Station, Status
FROM TableName WHERE Status IS NULL
GROUP BY OrderNO, Station, Status
UNION ALL 
SELECT OrderNO, QTY, Station, Status
FROM TableName WHERE Status='End'
GROUP BY OrderNO, Station, Status

钯。包含 Status='End' 的行将始终具有 Qty = 0 和 DateEd 日期时间。在我的表中插入的第一行必须包含 DateSt 日期时间。

如何添加这些日期时间列以保持最终结果符合我的预期?

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

    您可以在您的选择子句中的日期列上使用maxmin 函数吗? 像这样:

    select OrderNO, SUM(QTY), Station, Status, max(DateSt)
    

    而且您不必将其放在 group by 子句中。

    【讨论】:

      【解决方案2】:

      我认为您的第一个查询查询应该是这样的:

      SELECT OrderNO,
             MAX(CASE WHEN Status IS NULL THEN QTY END) as QTY,
             Station, Status,
             MAX(CASE WHEN Status IS NULL THEN Date END) as DateSt,
             MAX(CASE WHEN Status = 'End' THEN Date END) as DateEn
      FROM TableName WHERE Status IS NULL
      GROUP BY OrderNO, Station;
      

      【讨论】:

        猜你喜欢
        • 2017-08-19
        • 2016-10-28
        • 2016-06-02
        • 2014-03-28
        • 2017-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多