У меня есть эта таблица:Получение PIVOT с помощью GroupBy
Person Job Day EndDay
1 101 1 12
1 102 2 11
1 103 3 11
3 101 1 11
3 102 2 11
3 JobOff 3 11
2 101 1 11
2 102 2 11
2 103 3 11
2 JobOff 4 11
...
PS: Мои дни ДО 'N', который я не знаю. Таким образом, статический SQL здесь невозможен.
И мне нужно, чтобы изменить его к этой форме:
Day (Columns)
Person (Rows)
Person 1 2 3 4
1 101 102 103 N/A
2 101 102 103 JobOff
3 101 102 JobOff N/A
Любая помощь будет оценена. Я очень новичок в SQL.
Благодаря Roman, у меня есть S.Procedure:
CREATE PROCEDURE [dbo].[MyStoredProcedure] AS
BEGIN
declare @stmt nvarchar(max)
select @stmt =
isnull(@stmt + ', ', '') +
'isnull(max(case when [Day] = ' + cast([Day_I] as nvarchar(max)) +
' then Job end), ''N/A'') as [' + cast([Day_I] as nvarchar(max)) + ']'
from (select distinct [Day_I] from dbo.Solution) as t
order by [Day_I]
select @stmt = '
select
Person_I, ' + @stmt +'
from dbo.Solution_Format
group by Person_I'
END
Но когда я выполнения этой хранимой процедуры, как это:
exec MyStoredProcedure
Его не показывал мне никаких результатов. Нет ошибок!
Nice Dynamic sample –
Спасибо! Однако мои дни (столбцы) до 63. Будет ли ваше динамическое решение работать? –
@ RG-3 он должен работать на любое количество отдельных дней, попробуйте его –