如何解决如何连接两个字段并在 WHERE 子句中使用结果?
我必须根据日期时间信息获取所有最旧的记录。
数据
Id | External Id | Date | Time
1 | 1000 | 2020-08-18 00:00:00 | 02:30:22
2 | 1000 | 2020-08-12 00:00:00 | 12:45:51
3 | 1556 | 2020-08-17 00:00:00 | 10:09:01
4 | 1919 | 2020-08-14 00:00:00 | 18:19:18
5 | 1919 | 2020-08-14 00:00:00 | 11:45:21
6 | 1919 | 2020-08-14 00:00:00 | 15:54:15
预期结果
Id | External Id | Date | Time
2 | 1000 | 2020-08-12 00:00:00 | 12:45:51
3 | 1556 | 2020-08-17 00:00:00 | 10:09:01
5 | 1919 | 2020-08-14 00:00:00 | 11:45:21
我正在做这个
SELECT *
FROM RUN AS T1
WHERE CONCAT(T1.DATE,T1.TIME) = (
SELECT MIN(CONCAT(T2.DATE,T2.TIME))
FROM RUN AS T2
WHERE T2.EXTERNAL_ID = T1.EXTERNAL_ID
)
这是正确的做法吗?
谢谢,问候
更新 1:数据类型
DATE
列是 datetime
TIME
列是 varchar
解决方法
您可以使用窗口函数,例如 DENSE_RANK()
SELECT ID,External_ID,Date,Time
FROM
(
SELECT DENSE_RANK() OVER (PARTITION BY External_ID ORDER BY Date,Time) AS dr,r.*
FROM run r
) AS q
WHERE dr = 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。