【发布时间】:2021-12-12 04:16:23
【问题描述】:
我有以下优先级列表,其中 Source4 优先于 3、3 优先于 2、2 优先于 1,依此类推。
| SourceID | SourceDescription |
|---|---|
| 1 | Source1 |
| 2 | Source2 |
| 3 | Source3 |
| 4 | Source4 |
我还有下表包含数据(但是该表将包含多个不同的 EventID)
| EventID | CommencingTime | SourceID |
|---|---|---|
| 12345 | 2021-10-24 11:27:34 | 1 |
| 12346 | 2021-10-24 11:27:34 | 1 |
| 12347 | 2021-10-24 11:27:34 | 1 |
| 12345 | 2021-10-24 12:58:55 | 3 |
| 12346 | 2021-10-24 12:58:55 | 3 |
| 12347 | 2021-10-24 12:58:55 | 3 |
| 12345 | 2021-10-24 10:58:00 | 2 |
| 12346 | 2021-10-24 10:58:00 | 2 |
| 12347 | 2021-10-24 10:58:00 | 2 |
如何根据优先级列表从上面获取最低日期。
在这种情况下,正确的结果集应该是:
| EventID | CommencingTime | SourceID |
|---|---|---|
| 12345 | 2021-10-24 12:58:55 | 3 |
| 12346 | 2021-10-24 12:58:55 | 3 |
| 12347 | 2021-10-24 12:58:55 | 3 |
我尝试过MIN OVER PARTITION BY ORDER BY SourceID DESC,但这只是不断返回 2021-10-24 10:58:00 并忽略优先级 SourceID
【问题讨论】:
-
我已尝试按 SourceID DESC 的顺序执行 MIN OVER PARTITION,但这只是不断返回 2021-10-24 10:58:00 并忽略优先级 SourceID
-
请edit您尝试回答您的问题。顺便说一句,如果您将示例数据添加为 DDL+DML,您可以更轻松地为我们提供帮助。
-
当
12346和12347也具有相同的日期和优先级源ID 时,EventID12345是唯一返回的行是否有原因? -
@ggordon,对不起错误。现在更正了。只要它尊重优先级列表顺序,它实际上可以返回所有事件。所以在这种情况下,它会返回 12345, 12346, 12347 但都是 2021-10-24 12:58:55
-
@thatsweetguy 感谢您的澄清。我已经更新了答案以反映这一点
标签: sql sql-server tsql min