-1
我有問題關於SQL Server交換行值
來源:emp
id | name | check |deptname
100 | a | 1 |ceo
100 | b | 2 |hr
100 | c | 3 |po
100 | d | 5 |no
101 | a | 1 |pm
101 | b | 5 |ceo
102 | a | 1 |rn
102 | b | 2 |han
這裏相同的ID有檢查2個和5個值那麼我們就需要更換校驗值2個校驗值那個ID。
基於上面的表格我想負載/輸出數據到目標表像下面
目標:emp1
id | name | check |deptname
100 | a | 1 |ceo
100 | d | 2 |hr
100 | c | 3 |po
101 | a | 1 |pm
101 | b | 5 |ceo
102 | a | 1 |rn
102 | b | 2 |han
,我試圖像下面
select
a1.id,
a1.name,
isnull(a2.[check],a1.[check]) as [check]
from
emp as a1
left outer join
emp as a2 on a2.id = a1.id
and a1.[check] in (2,5)
and a2.[check] in (2,5)
and a2.[check] <> a1.[check]
where
a2.id is null
or (a1.[check] = 5
and a2.[check] = 2)
這查詢不返回正確的結果。
請告訴我如何編寫查詢來獲取在SQL Server中的預期輸出
你的問題說變就變「檢查「值,但實際上您正在更改名稱,因爲deptname會保留爲值爲2的行。 –