0

私はこのようなテーブルを持っています

DisposalID  ReportID

242            84
243            84

次の方法で見たい

DisposalID  DisposalID     ReportID

242              243               84

ピボットテーブルを使用しようとしましたが、それを達成できませんでした

select 
  *
from
(
SELECT [DisposalID]
,[ReportID]

FROM [ClearData_Test].[dbo].[DisposalConsolidatedView] WHERE [ReportID]=84
) DataTable
PIVOT
(
  Min(disposalid)
  FOR reportid
  IN ([84])
) PivotTable

それは私に最小または最大を与えるだけです。どんな助けでも大いに感謝します。

4

2 に答える 2

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

select @cols = STUFF((SELECT distinct ',' + QUOTENAME('DisposalID'+cast(seq as varchar(10))) 
                from
                (
                  select row_number() over(partition by [reportId] 
                                           order by disposalid) seq
                  from [ClearData_Test].[dbo].[DisposalConsolidatedView]
                ) d
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'')

set @query = 'SELECT [ReportID],' + @cols + ' 
        from 
        (
          SELECT [ReportID], disposalid,
            ''disposalid''+
              cast(row_number() over(partition by  [reportId] 
                                     order by disposalid) as varchar(10)) seq
          FROM  [ClearData_Test].[dbo].[DisposalConsolidatedView]
          where[ReportID]=''84''
        ) x
        pivot 
        (
           Min(disposalid)
            for seq in (' + @cols + ')
        ) p '

execute sp_executesql @query;

それが私が探していた解決策でした。

于 2013-11-05T15:00:00.327 に答える