我有2列(ColA,ColB)都是數據類型Nvarchar。
我需要col B對於ColA中的值是唯一的SQL:在其他值更改時將字符串添加到字段
ColA中的某些行在ColA中具有2個不同的值,在ColB中具有相同的值(非唯一)。
我想編寫一個查詢,以便在末尾顯示ColB值和字母「D」(重複),其中ColA中的值正在更改爲其他值。
我有2列(ColA,ColB)都是數據類型Nvarchar。
我需要col B對於ColA中的值是唯一的SQL:在其他值更改時將字符串添加到字段
ColA中的某些行在ColA中具有2個不同的值,在ColB中具有相同的值(非唯一)。
我想編寫一個查詢,以便在末尾顯示ColB值和字母「D」(重複),其中ColA中的值正在更改爲其他值。
據我所知,你想標記ColB值需要改變的行。
如果是這樣嘗試這樣的事情
SELECT t1.COLA,
t1.COLB + 'D'
FROM TABLE1 t1
INNER JOIN TABLE1 t2
ON t1.COLB = t2.COLB
AND t1.COLA != t2.COLA
這將只顯示「雙節」行。如果你想顯示所有的行,只需添加一個UNION到最後:
SELECT t1.COLA,
t1.COLB + 'D'
FROM TABLE1 t1
INNER JOIN TABLE1 t2
ON t1.COLB = t2.COLB
AND t1.COLA != t2.COLA
UNION
SELECT *
FROM TABLE1
WHERE COLA NOT IN (SELECT t1.COLA
FROM TABLE1 t1
INNER JOIN TABLE1 t2
ON t1.COLB = t2.COLB
AND t1.COLA != t2.COLA)
看到SQL Fiddle完整的例子。
它看起來不錯!但是當我與UNION一起運行時,我得到這個結論:「使用UNION,INTERSECT或EXCEPT運算符組合的所有查詢必須在其目標列表中具有相同數量的表達式。」我敢肯定有什麼問題 – user1508682
當使用UNION時,你必須確保UNION的兩邊都有相同的列! 在SQL Fiddle中設置您的查詢或將其發佈到此處,然後我會查看它。 – Gidil
你能更清楚一點嗎? ColA的價值變化意味着什麼? – Gidil
你能提供樣品表數據嗎? –
您可以具有*讀取*查詢(選擇)或*寫入*查詢(更新),但不能同時包含兩者。你的問題表明你想要一個查詢來做到這一點,你不能擁有。 – Bohemian