在SELECT语句的单独行中返回列

Sam*_*Sam 6 t-sql sql-server

在我的Customers表格中,我有PrimaryPhoneSecondaryPhone列,并且要求我在两行中分别返回它们。我还要提及的是,在大多数情况下,SecondaryPhone甚至可能没有值,在这种情况下,无需返回第二行。

因此,这是来自Customers表的数据:

CustomerId  |  CompanyName      |  PrimaryPhone    |  SecondaryPhone
123            Acme, Inc.          307-555-1234       307-555-2345
234            DataCorp, Inc.   |  824-555-6547
Run Code Online (Sandbox Code Playgroud)

我的SELECT语句应返回以下数据:

CustomerId  | CompanyName     | Phone
123           Acme, Inc.        307-555-1234
123           Acme, Inc.        307-555-2345
234           DataCorp, Inc.    824-555-6547
Run Code Online (Sandbox Code Playgroud)

我希望您能找到一些有关如何将一列中的数据显示为单独行的指针。谢谢。

Joh*_*tti 7

交叉申请将是一个很好的选择

Select CustomerId
      ,CompanyName
      ,B.*
 From Customers A
 Cross Apply (values (PrimaryPhone)
                    ,(SecondaryPhone)
             ) B(Phone)
  Where Phone is not null
Run Code Online (Sandbox Code Playgroud)

-编辑忘记了这里