【发布时间】:2020-05-06 09:08:07
【问题描述】:
所以我的表(表 A)包含显示员工向谁报告的记录。 当一个人更改“报告至”时,它将更新表格并显示旧值和新值。我正在努力编写一个 SQL 查询来返回旧雇主和新雇主。
表A
-----------------------------------------------------------------------
ID |Date |Employee |Reports To |Command
-----------------------------------------------------------------------
1 |2020-05-05 09:32:56.193 |EMP0 |EMP1 OLD
-----------------------------------------------------------------------
2 |2020-05-05 09:39:56.193 |EMP0 |EMP2 NEW
-----------------------------------------------------------------------
3 |2020-05-05 11:32:56.193 |EMP0 |EMP2 OLD
-----------------------------------------------------------------------
4 |2020-05-05 11:38:56.193 |EMP0 |EMP3 NEW
-----------------------------------------------------------------------
5 |2020-05-05 19:32:56.193 |EMP0 |EMP3 OLD
-----------------------------------------------------------------------
6 |2020-05-05 19:35:56.193 |EMP0 |EMP2 NEW
------------------------------------------------------------------------
我想返回的结果:
------------------------------------------------------------
ID |Employee |Currently Reports To |Previously Reported To
-------------------------------------------------------------
1 EMP0 EMP2 EMP1
-------------------------------------------------------------
2 EMP0 EMP3 EMP2
-------------------------------------------------------------
3 EMP0 EMP2 EMP3
-------------------------------------------------------------
我尝试过的 SQL 查询:
SELECT Employee, tb1.[Reports To] FROM Table A tb1 JOIN Table A tb2
ON tb1.Employee =tb2.Employee AND tb1.Reports To <> tb2.Reports To
AND tb2.Command = 'OLD'
WHERE tb1.Command = 'NEW'```
【问题讨论】:
-
这个查询有什么问题? (除了应该是
SELECT tb1.ID, tb1,Employee, tb1.[Reports To] , tb2.[Reports To]的选择部分)
标签: sql sql-server tsql select