Использование PIVOT для получения SELECT в один столбец, а не в строку - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь сделать выбор, который покажет результат в ОДНОМ столбце, а не в строке. Я пробовал использовать PIVOT, но мне это не удалось.

Результат моего выбора:

Customer_ID:   InsertionDate:  Name:   Birth:                                                
  1234          2020-01-01     John  1993-01-01

Я хочу, чтобы это было так:

                 MyColumn                                               
 Customer_ID:    1234   
 InsertionDate:  2020-01-01  
 Name:           John  
 Birth:          1993-01-01

1 Ответ

0 голосов
/ 29 мая 2020

Вы можете использовать cross apply для получения одного столбца:

declare @test table (Customer_ID int,  InsertionDate date,  Name varchar(50), Birth date)   
insert into @test values (1234, '2020-01-01','John', '1993-01-01')

select  val as MyColumn
from @test
    CROSS APPLY 
    (
    VALUES
        ('Customer_ID:'+   cast(Customer_ID as varchar)),
        ('InsertionDate:'+ cast(InsertionDate as varchar)),
        ('Name:'+ cast(Name as varchar)),
        ('Birth:'+ cast(Birth as varchar))
    )CS (val)

результаты:

enter image description here

или, если вы предпочитаете иметь отдельный столбец для описаний:

select 
    Col as ColumnName, 
    val as MyColumn
from @test
    CROSS APPLY 
    (
    VALUES
        ('Customer_ID:'  , cast(Customer_ID as varchar)),
        ('InsertionDate:', cast(InsertionDate as varchar)),
        ('Name:'         , cast(Name as varchar)),
        ('Birth:'        , cast(Birth as varchar))
    )CS (col, val)

вывод:

enter image description here

...