Конвертировать данные строк (даты) в заголовки столбцов в SQL - PullRequest
0 голосов
/ 12 декабря 2018

Привет, друзья! Я пытаюсь преобразовать данные строки с датами в заголовках столбцов. Это моя таблица данных sql ParticipanceData

Обычная таблица Исходные данные

, и я хочу преобразовать строкудаты в заголовках столбцов, как это

Транспонировать enter image description here

Может кто-нибудь сказать мне, как я могу сделать это в sql

Я уверен, используя сводную Iможно,

, поэтому я попытался SQL-запрос к сводной

SELECT Enterprise_ID, Date, Attendance 
FROM attendanceData natural 
    join (  SELECT Enterprise_ID 
            FROM attendanceData 
            group BY Enterprise_ID
        ) 
pivot (max(P) for Attendance in ('P' as P, 'WO' as WO)

1 Ответ

0 голосов
/ 12 декабря 2018

Я пытался использовать динамический пивот

Пример сценария для генерации данных:

create table #a
(
  entrprise_id varchar(50),
  datee date,
  attendance varchar(10)
)

insert into #a values
('james','2018-12-22','p'),
('james','2018-12-23','p'),
('pick','2018-12-23','p'),
('rick','2018-12-23','p'),
('pick','2018-12-22','p'),
('rick','2018-12-22','p')

Запрос PIVOT:

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.datee) 
            FROM #a c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT entrprise_id, ' + @cols + ' from 
            (
                select*
                from #A
           ) x
            pivot 
            (
                 max(attendance)
                for datee in (' + @cols + ')
            ) p '


execute(@query)

или

select *
from
(
  select *
  from #A
) src
pivot
(
  max(attendance)
  for datee in ([2018-12-22], [2018-12-23])
) piv
...