【发布时间】:2021-12-07 09:03:30
【问题描述】:
我的表格中有如下数据:
输入:
version value code type
PMS 0.00 01 HOURS
000 312.00 01 HOURS
000 0.00 04 HOURS
PMS 0.00 01 NON STOCK
000 835.00 01 NON STOCK
000 835.00 04 NON STOCK
- 第一步:按代码排序,01和04。
- 第 2 步:按类型排序,即 HOURS 和 NON STOCK。
- 第 3 步:按版本检索,如果为 0.00 则检索记录。
输出说明:
对于代码 = 01, 我们有 4 条记录,类型 = HOURS 的 2 条记录和类型 = NON STOCK 的 2 条记录。但选择版本不等于 PMS 的记录(由于列类型重复)。因此我们得到两个代码为 01 的输出。
000 312.00 01 HOURS
000 835.00 01 NON STOCK
对于代码 = 04, 我们有 2 条记录,1 条记录类型 = HOURS,1 条记录类型 = NON STOCK。因为我们这里没有列类型的重复项,所以在这种情况下不需要比较版本。因此我们得到两个输出,代码为 01
000 0.00 04 HOURS
000 835.00 04 NON STOCK
(数据库引擎是 Azure databricks)
预期输出:
version value code type
000 312.00 01 HOURS
000 835.00 01 NON STOCK
000 0.00 04 HOURS
000 835.00 04 NON STOCK
【问题讨论】:
-
如果一个组唯一可用的记录是 PMS 怎么办?你还想要吗?
-
是的,在这种情况下(没有重复),需要 PMS 记录。仅当存在基于类型的重复项时才检查 PMS
-
请指定您使用的数据库引擎(例如 MySQL、SQL Server、Sqlite 等)
-
Azure 数据块 - SQL Server
标签: sql sorting duplicates