我將Table1與列A和Table2與列B.SQL Query根據條件爲temp列指定值
當我使用join時,(Table1.A = Table2.B)我需要創建一個臨時列「標記」並將標記值設置爲「1」以匹配記錄,而對於其餘記錄(表1.A!=表2.B)應該具有標記值「0」。
結果集應該包含來自表和標誌值的列。
在此先感謝。
我將Table1與列A和Table2與列B.SQL Query根據條件爲temp列指定值
當我使用join時,(Table1.A = Table2.B)我需要創建一個臨時列「標記」並將標記值設置爲「1」以匹配記錄,而對於其餘記錄(表1.A!=表2.B)應該具有標記值「0」。
結果集應該包含來自表和標誌值的列。
在此先感謝。
試用FULL OUTER JOIN
。
SELECT *,CASE WHEN t1.A = t2.B THEN 1 ELSE 0 END Flag
FROM Table1 t1
FULL OUTER JOIN Table2 t2 ON t1.A=t2.B
您可以使用LEFT與ISNULL JOIN如下:
SELECT *,CASE WHEN t2.B IS NULL THEN 0 ELSE 1 END Flag
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.A=t2.B
對於來自右表
SELECT *,CASE WHEN t1.A IS NULL OR t2.B IS NULL THEN 0 ELSE 1 END Flag
FROM Table1 t1
FULL OUTER JOIN Table2 t2 ON t1.A=t2.B
我想過這個,但這會考慮左側表只有正確的??? –
是的,我們需要完整的外部才能從右表中顯示所有不匹配的值。讓我以不同的方式解決這個問題。謝謝 – Susang
檢查下面的例子也顯示無與倫比的價值:
DECLARE @tblA AS TABLE
(
ID INT,
A VARCHAR(50)
)
DECLARE @tblB AS TABLE
(
ID INT,
B VARCHAR(50)
)
INSERT INTO @tblA VALUES(1,'AA'),
(2,'CCC'),
(3,'DDD'),
(4,'FFF')
INSERT INTO @tblB VALUES(1,'AA'),
(2,'BBB'),
(3,'DDD'),
(4,'KKK')
SELECT
A.A,
B.B,
CASE ISNULL(B.B,'') WHEN '' THEN 0 ELSE 1 END AS Match
FROM @tblA A
LEFT JOIN @tblB B ON A.A=B.B
我認爲你需要按t2.B的要求編輯t2.A EMENT。 – Susang
是的..這是一個錯字..糾正..謝謝.. :) –