我有一张桌子:
人
我有这样的记录:
SELECT * FROM Person
1 Test 0123 NULL 0123
2 Test2 NULL 567 789 NULL
3 Test3 0123 NULL NULL 0123
4 Test4 0123 5555 NULL
(结果有NULL但还有EMPTY字符串)
我要选择所有有效数字(每个可用数字有多个记录):
1 Test 0123
1 Test 0123
2 Test 567
2 Test 789
这可能吗?我选择每个可用值的所有列,然后将值存储在最后一列中?
答案 0 :(得分:5)
一种简单的方法使用apply
:
select p.personid, p.name, v.contact_number
from person p cross apply
(values (phone1), (phone2), (fax1), (fax2)) v(contact_number)
where v.contact_number is not null;
答案 1 :(得分:2)
使用apply
Select personId, name, v.value from Person
cross apply (values(Phone1),
(Phone2),
(Fax1),
(Fax2))v(value)
where ISNULL(LTRIM(RTRIM(v.value)),'')<>''
答案 2 :(得分:1)
这应该适用于2012+。对于旧版本,请将iif转换为大小写。
bank_stocks.head()