2011-09-05 74 views
0

我不知道的字这更好的方式,但说我有一个表SQL选择多个不同的列行作为一列

name, homephone, fax, mobile 
======================================== 
bob,  123,   456, 999 
chris, null,  890, null 

我试图创建一个SQL语句,将得到我是这样的

name,  phone 
================ 
bob,  123 
bob,  456 
bob,  999 
chris, 890 
+0

可能未枢使用吗? – TrevDev

回答

5

如何使用UNION?说你的表叫做目录。喜欢的东西:

SELECT name, homephone AS phone FROM Directory WHERE homephone IS NOT NULL 
UNION 
SELECT name, fax AS phone FROM Directory WHERE fax IS NOT NULL 
UNION 
SELECT name, mobile AS phone FROM Directory WHERE mobile IS NOT NULL 
1
select T.name, P.phone 
from YourTale as T 
    cross apply (
       select homephone union all 
       select fax union all 
       select mobile 
      ) as P(phone) 
where p.phone is not null 
+0

+1我比罗伯特的解决方案更喜欢这个,但罗伯特的也很出色。 – deutschZuid