私はこのテーブルを持っています:
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が初めてです。
ローマンのおかげで、私はこの 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
結果が表示されません。エラーなし!