我有一個表是這樣的:查詢在SQL Server中的表基於列2的排列3
col1 col2 col3
111 1 1
222 1 0
333 0 1
444 0 0
這裏col2 = 1
意味着col1
是商業,col3 = 1
意味着col1
是零售爲好。我如何得到如下結果?
ID Description
111 Commercial
111 Retail
222 Commercial
333 Retail
我有一個表是這樣的:查詢在SQL Server中的表基於列2的排列3
col1 col2 col3
111 1 1
222 1 0
333 0 1
444 0 0
這裏col2 = 1
意味着col1
是商業,col3 = 1
意味着col1
是零售爲好。我如何得到如下結果?
ID Description
111 Commercial
111 Retail
222 Commercial
333 Retail
您可以用UNION ALL
做到這一點:
SELECT ID = col1, 'Commercial' FROM MyTable WHERE col2=1
UNION ALL
SELECT ID = col1, 'Retail' FROM MyTable WHERE col3=1
使用幾乎相同以上,但在一個單一的結果集
Select ID = col1, t.Description
from MyTable
cross apply (select Description = 'Commercial' where col2 = 1 union
select Description = 'Retail' where coll3 = 1)t
可與UNPIVOT
也可以做:
DECLARE @t TABLE
(
col1 INT ,
col2 INT ,
col3 INT
)
INSERT INTO @t
VALUES (111, 1, 1),
(222, 1, 0),
(333, 0, 1),
(444, 0, 0)
SELECT col1 ,
CASE WHEN col = 'col2' THEN 'Commercial'
ELSE 'Retail'
END AS Description
FROM @t UNPIVOT(r FOR col IN ([col2], [col3])) u
WHERE r <> 0
如果你想引用一個其他答案,鏈接到它通常會更好(每個答案下面有一個共享鏈接,這會給你一個URL,而且我通常會使用「dasblinkenlight的答案」這樣的短語作爲鏈接文本),而不是使用「位置」像「上面」這樣的語言 - 畢竟,答案的位置可以基於投票和接受而改變。 –
dasblinkenlight的回答也只有一個結果集。 – AakashM