2013-07-23 70 views
1

明顯的單一值。例如,我有如下表:SQL選擇多列(未合併值)

UserId Department1 Department2 
------------------------------ 
1  Sales  Marketing 
2  Research 
3  Sales 

而且我想要得到以下結果

DistinctDepartments 
------------------- 
Sales 
Marketing 
Research 

我發現很多的解決方案向我展示了多個列的不同組合值,但我需要整體不同的值,就好像所有值都位於同一列中一樣。

三江源

克里斯

回答

3

嘗試使用union與兩列

select Department1 
from tab 
union 
select Department2 
from tab 

注:union命令消除重複

+0

謝謝你,那正是我正在尋找的東西 - 並瞭解到工會消除了重複。 – ElChupanibre

+0

抱歉不能投票(還) – ElChupanibre

+0

@ElChupanibre不要問題,但請記住;) – Parado

4

使用union絕對是一個合理的辦法解決這個問題。在大多數數據庫中,不過,下面可能會更快:

select distinct (case when n = 1 then Department1 else Department2 end) 
from tab cross join 
    (select 1 as n union all select 2) n 

的原因是,該表只掃描一次,而不是一次爲每個列。當tab不是真正的表格時,這可能特別重要,但是更昂貴的觀點。 (並且一些數據庫支持unpivot,其行爲與此類似)。

+0

+1有趣的想法 –

+0

+1是啊有趣 – Parado