我的I/P是一列名爲Color: -獲得獨特結合記錄從一列在SQL
Colour
Red
Blue
White
我需要輸出爲: -
Red - Blue
Red - White
Blue - White
我應該如何寫SQL查詢爲同樣考慮如果我需要輸出在一列&兩個不同的列。
我的I/P是一列名爲Color: -獲得獨特結合記錄從一列在SQL
Colour
Red
Blue
White
我需要輸出爲: -
Red - Blue
Red - White
Blue - White
我應該如何寫SQL查詢爲同樣考慮如果我需要輸出在一列&兩個不同的列。
select concat(t2.colour,'-',t1.colour) from table1 t1,table1 t2 where t1.colour>t2.colour order by t2.colour,t1.colour;
替換表名並嘗試此操作。
你可以做一個自聯接:
DECLARE @T TABLE (Colour VARCHAR(20))
INSERT @T VALUES ('Red'), ('Blue'), ('White');
SELECT T1.Colour,
t2.Colour,
T1.Colour + ' - ' + T2.Colour AS InOneColumn
FROM @T AS T1
INNER JOIN @T AS T2
ON T2.Colour > T1.Colour;
你只需要一個條件,以確保你沒有得到鏡像的組合,即Blue - White
和White - Blue
。在連接中使用大於運算符將確保這一點。
您可以使用內部連接& row_number窗口函數來實現此目的。
SELECT T1.COLOR
,T2.COLOR
,T1.COLOR +' - ' + T2.COLOR
FROM
(SELECT ROW_NUMBER() OVER(ORDER BY COLOR) AS RN1,COLOR FROM COLOR) T1
JOIN
(SELECT (ROW_NUMBER() OVER(ORDER BY COLOR)-1) AS RN2,COLOR FROM COLOR) T2
ON T1.RN1 = T2.RN2 OR T1.RN1+1 = T2.RN2
ORDER BY T1.COLOR