在我的 Customers 表中,我有 PrimaryPhoneSecondaryPhone 列,我被要求在两个单独的行中返回它们。我还想提一下,在大多数情况下,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

我很感激有关如何将列中的数据显示为单独行的一些指示。谢谢。

最佳答案

CROSS APPLY 很适合这里

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

-- 编辑忘记了 WHERE

关于sql-server - 在 SELECT 语句中的单独行中返回列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55457484/

10-09 05:16