2

私の人事プロジェクトには、フィールドを持つ1つのテーブルがあります:

EmpName(nvarchar(50)),LeaveType(nvarchar(10)),FromDate(datetime),ToDate(datetime)

および以下のサンプルデータ入力:

EmpName LeaveType  FromDate     ToDate
AA         AL      22-May-13    28-May-13
BB         SPL     25-May-13    31-May-13

レポートでは、以下のように毎日データを選択したいと考えています。

EmpName 22-May-13   23-May-13   24-May-13   25-May-13   26-May-13   27-May-13   28-May-13   29-May-13   30-May-13   31-May-13
AA         AL         AL          AL          AL          AL          AL    AL          
BB                                             SPL        SPL          SPL       SPL     SPL     SPL               SPL

SQL Server 2008 R2 でストアド プロシージャを使用してこのレポートを作成する方法 あなたの助けに感謝します。ありがとう!

4

2 に答える 2

2

これを試して :

Declare @Emp table 
(EmpName varchar(10), LeaveType varchar(10),
 FromDate  date,ToDate date)

insert into @Emp values('AA','AL','22-May-13','28-May-13')
insert into @Emp values('BB','SPL','25-May-13','31-May-13')

select * from @emp

;with cte as
(select EmpName,LeaveType, FromDate ,ToDate from @Emp
union all

select EmpName,LeaveType,DATEADD(dd,1,FromDate),ToDate
 from cte where FromDate<ToDate)

select * into #demo from
(select EmpName,LeaveType,FromDate from cte ) a



Declare @col varchar(2000)
select @col=STUFF(
(select ',[' + cast(FromDate as varchar) + ']' from 
    (select distinct FromDate from #demo)b For XML path('')),
1,1,'')


print @col

Declare @query varchar(max)
SET @query =
    'SELECT EmpName, ' + @col + '
     FROM (SELECT EmpName, LeaveType, FromDate 
          FROM #demo ) a
     PIVOT (
            MIN([LeaveType])
            FOR FromDate IN (' + @col + ')
            ) AS pvt
    ORDER BY pvt.EmpName'


exec (@query)


drop table #demo
于 2013-05-22T05:26:08.020 に答える