如何解决在日期时间创建的记录上加入两个记录表 - SQL
我正在尝试连接(完全外部连接)两个包含客户端状态信息的记录或历史表。每条记录都有一个创建记录的日期时间字段,以及新旧状态。
表 A
ID | 创建于 | 旧状态 | 新状态 |
---|---|---|---|
10001 | 2/05/2021 12:00:00 | NULL | 饿了 |
10001 | 3/05/2021 12:00:00 | 饿了 | 伤心 |
表 B
ID | B 创建于 | B 状态旧 | B 状态新 |
---|---|---|---|
10001 | 2/05/2021 12:00:00 | NULL | 活跃 |
10001 | 4/05/2021 12:00:00 | 活跃 | 无效 |
我想要的结果是一个记录表,其中包含每个日期时间的所有状态变化。
创建于 | 旧状态 | 新状态 | B 创建于 | B 状态旧 | B 状态新 |
---|---|---|---|---|---|
2/05/2021 12:00:00 | NULL | 饿了 | 2/05/2021 12:00:00 | NULL | 活跃 |
3/05/2021 12:00:00 | 饿了 | 伤心 | NULL | NULL | NULL |
NULL | NULL | NULL | 4/05/2021 12:00:00 | 活跃 | 无效 |
然而,我的查询结果返回一个没有表 B 中最后一条记录的表
创建于 | 旧状态 | 新状态 | B 创建于 | B 状态旧 | B 状态新 |
---|---|---|---|---|---|
2/05/2021 12:00:00 | NULL | 饿了 | 2/05/2021 12:00:00 | NULL | 活跃 |
3/05/2021 12:00:00 | 饿了 | 伤心 | NULL | NULL | NULL |
我所拥有的并不复杂......但我不知道为什么它不起作用。
SELECT *
FROM A
FULL OUTER JOIN B
ON A.A_CreatedOn = B.B_CreatedOn
我的完整查询与此类似
SELECT
[A_CreatedOn],[Status A OLD],[Status A NEW],[B_CreatedOn],[Status B OLD],[Status B NEW]
FROM A
FULL OUTER JOIN B
ON A.A_CreatedOn = B.B_CreatedOn
JOIN C
ON A.ID = C.ID
WHERE C = '10001'
解决方法
JOIN C
ON A.ID = C.ID
WHERE C = '10001'
问题应该出在这种情况下。检查这个地方的加入条件。
,问题在于 JOIN
条件,因为使用 FULL JOIN
,您可以在 NULL
的 ID
中拥有 Table A
可以使用这个JOIN条件来解决问题
JOIN C ON ISNULL(A.ID,B.ID) = C.ID
WHERE C = '10001'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。