我有这张桌子:
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
它显示我没有结果。没有错误!