sql - 按表包含日期时间列时分组
问题描述
我有下表:
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 日期时间。
我可以做些什么来添加那些日期时间列以保持我期望的最终结果?
解决方案
您可以在 select 子句中的日期列上使用max
or函数吗?min
像这样:
select OrderNO, SUM(QTY), Station, Status, max(DateSt)
而且您不必将其放在 group by 子句中。
推荐阅读
- c# - 解析 "\ENABLED" - 无法识别的转义序列 \E
- python - pyqt5:数据库上的数据更改后正确更新QTreeView
- bash - Bash shell 从 IP 地址列表中生成 RANGE
- java - 使用 Base 64 解码数据时出现垃圾字符
- java - 从 1 到 N 的所有数字的总和始终为零
- c# - 从服务器端加载二进制文件和名称到 RadAsyncUpload(OnLoad 事件)
- css - 使用 rem 单位时的 Chrome 缩放问题
- perl - 右移二进制 no 并获得变量中的移位位
- java - 如何在核心 java 中使用 Jetty JNDI 进行 DAO Junit 测试?
- mysql - 无法识别产生错误消息的错误