在我的Customers
表中,我有PrimaryPhone
和SecondaryPhone
列,并要求我在两行中分别返回它们。我还要提及的是,在大多数情况下,SecondaryPhone
甚至可能没有值,在这种情况下,无需返回第二行。
因此,以下是来自Customers
表的数据:
CustomerId | CompanyName | PrimaryPhone | SecondaryPhone
123 Acme, Inc. 307-555-1234 307-555-2345
234 DataCorp, Inc. | 824-555-6547
我的SELECT
语句应返回以下数据:
CustomerId | CompanyName | Phone
123 Acme, Inc. 307-555-1234
123 Acme, Inc. 307-555-2345
234 DataCorp, Inc. 824-555-6547
我很欣赏一些有关如何将一列中的数据显示为单独的行的指针。谢谢。
答案 0 :(得分:7)
在这里交叉申请将是一个很好的选择
Select CustomerId
,CompanyName
,B.*
From Customers A
Cross Apply (values (PrimaryPhone)
,(SecondaryPhone)
) B(Phone)
Where Phone is not null
-编辑忘记了位置
答案 1 :(得分:3)
您可以尝试这样的工会
SELECT
CustomerId,
CompanyName,
PrimaryPhone as Phone,
FROM dbo.Customers
UNION
SELECT
CustomerId,
CompanyName,
SecondaryPhone as Phone,
FROM dbo.Customers
WHERE
SecondaryPhone IS NOT NULL
答案 2 :(得分:0)
这是解决问题的完美方法(查询)
SELECT
CustomerId,
CompanyName,
PrimaryPhone as Phone
FROM dbo.Customer
UNION
SELECT
CustomerId,
CompanyName,
SecondaryPhone as Phone
FROM dbo.Customer
WHERE
DATALENGTH(SecondaryPhone)<>0
输出: