我試圖做同樣的事情到 How can I improve this SQL query?誤差與存儲過程中的邏輯
然而,有邏輯 基本上我有可能與他們有關聯的多個值ID的列表,這些值是是,否,或其他一些字符串。 對於ID x,如果其中任何一個值爲是,則x應該爲Yes,如果它們全部爲No,則它應該爲No,如果它們包含任何其他值但是yes和no,則顯示該值。我只想每個ID返回1行,不重複。
,但在我的邏輯,如果所有的值都是肯定的,那麼顯示是,如果所有值都沒有那麼不顯示,如果是肯定的混合,沒有或其他任何顯示混合
DECLARE @tempTable table (ID int, Val varchar(1))
INSERT INTO @tempTable (ID, Val) VALUES (10, 'Y')
INSERT INTO @tempTable (ID, Val) VALUES (11, 'N')
INSERT INTO @tempTable (ID, Val) VALUES (11, 'N')
INSERT INTO @tempTable (ID, Val) VALUES (12, 'Y')
INSERT INTO @tempTable (ID, Val) VALUES (12, 'Y')
INSERT INTO @tempTable (ID, Val) VALUES (12, 'Y')
INSERT INTO @tempTable (ID, Val) VALUES (13, 'N')
INSERT INTO @tempTable (ID, Val) VALUES (14, 'Y')
INSERT INTO @tempTable (ID, Val) VALUES (14, 'N')
INSERT INTO @tempTable (ID, Val) VALUES (15, 'Y')
INSERT INTO @tempTable (ID, Val) VALUES (16, 'Y')
INSERT INTO @tempTable (ID, Val) VALUES (17, 'F')
INSERT INTO @tempTable (ID, Val) VALUES (18, 'P')
SELECT DISTINCT t.ID, COALESCE(t2.Val, t3.Val, t4.Val)
FROM @tempTable t
LEFT JOIN
(
SELECT ID, Val
FROM @tempTable
WHERE Val = 'Y'
) t2 ON t.ID = t2.ID
LEFT JOIN
(
SELECT
ID, Val FROM @tempTable
WHERE Val = 'N'
) t3 ON t.ID = t3.ID
LEFT JOIN
(
SELECT ID, Val
FROM @tempTable
WHERE Val <> 'Y' AND Val <> 'N'
) t4 ON t.ID = t4.ID
Update dbo.households
SET dbo.households.code = #TempTable.code
FROM #TempTable
WHERE dbo.households.id = #TempTable.id
什麼問題? – akonsu
由於某種原因,如果結果出現N,N,P它仍然顯示N或者如果它出來Y,N它將顯示Y.我想Y,Y出來作爲Y和N,N出來作爲N和其他所有出來'M' –