0
この2つの属性の表があります(写真参照)。今私はPIVOTを使って私の仕事を成功させようとしています。別の列の値に基づいて行をピボットする列
は私が持っていると思います:SparePartListID=1
これが可能である達成するために、行にSparePartsListID=2
に対応してすべてのWorkOperationsID
ため
この2つの属性の表があります(写真参照)。今私はPIVOTを使って私の仕事を成功させようとしています。別の列の値に基づいて行をピボットする列
は私が持っていると思います:SparePartListID=1
これが可能である達成するために、行にSparePartsListID=2
に対応してすべてのWorkOperationsID
ため
。これは、そうでない場合は(それらの両方)Partition By SparePartsListID
を削除
Declare @SQL varchar(max) = Stuff((Select Distinct ',' + QuoteName(RN) From (Select Distinct RN=Row_Number() over (Partition By SparePartsListID Order by WorkOperationID) From YourTable) A Order by 1 For XML Path('')),1,1,'')
Select @SQL = '
Select [SparePartsListID],' + @SQL + '
From (
Select *
,RN=Row_Number() over (Partition By SparePartsListID Order by WorkOperationID)
From YourTable
) A
Pivot (max(WorkOperationID) For [RN] in (' + @SQL + ')) p'
Exec(@SQL);
戻り
SparePartsListID 1 2 3 4 ...
1 101282 101344 101398 NULL ...
2 84108 84921 85528 86228 ...
EDIT、あなたがDENSE列をしたいと仮定している - あなたはDYNAMICは、[拡張したくない場合1]、[2]、[3]、[4]、...、[n]
Select *
From (
Select *
,RN=Row_Number() over (Partition By SparePartsListID Order by WorkOperationID)
From YourTable
) A
Pivot (max(WorkOperationID) For [RN] in ([1],[2],[3],[4])) p
SparePartsList = 1よりも多くのSparePartsList = 1があります。 – McNets
希望する出力の例を追加してください – Stephen