1
我有一個表(EmpInfo)存儲員工信息。下面是字段:複雜的SQL自我加入
EMPLID - VARCHAR(11)(PK)
NAME - VARCHAR(50)
POSITION_NBR - VARCHAR(8)
CREPORTS5 - 炭(8)
CREPORTS6 - 炭(8)
CREPORTS7 - 炭(8)
CREPORTS字段引用命令鏈中的POSITION_NBR字段。
我想寫一個SQL查詢,我可以返回CREPORTS代替POSITION_NBR
層次結構的名稱:
傑克·瓊斯 - CEO
約翰·史密斯 - 經理
薩拉測試 - 主管
蘇茜Blerg - 工人
邁克·馬丁 - 工人
--------------------------------------------------------------------------------
| EMPLID | NAME | POSITION_NBR | CREPORTS5 | CREPORTS6 | CREPORTS7 |
--------------------------------------------------------------------------------
| 1234 | John Smith | 11111 | 22222 | NULL | NULL |
--------------------------------------------------------------------------------
| 2345 | Jack Jones | 22222 | NULL | NULL | NULL |
--------------------------------------------------------------------------------
| 3456 | Sarah Test | 33333 | 22222 | 11111 | NULL |
--------------------------------------------------------------------------------
| 4567 | Suzy Blerg | 44444 | 22222 | 11111 | 33333 |
--------------------------------------------------------------------------------
| 5678 | Mike Martin | 55555 | 22222 | 11111 | 33333 |
--------------------------------------------------------------------------------
我沒有太大的SQL的傢伙,所以我的第一個嘗試像這樣:
SELECT EmpInfo.EMPLID
EmpInfo.CREPORTS5,
CAST
((SELECT TOP (1) NAME
FROM EmpInfo AS subInfo
WHERE (subInfo.POSITION_NBR = EmpInfo.CREPORTS5)) AS varchar(50)) AS CREPORTS5_NAME
FROM EmpInfo
該查詢有效,但在對300k條記錄運行時運行緩慢。