以下を使用して、クエリを動的に実行することができます。つまり、新しい「インチ」の値を追加しても自動的に作成されます。あなたがテストできるように、以下のマニュアルインサートも提供されています。また、各DrawerBox/DrawerBoxTypeの最大「値」を取得していることにも注意してください。必要に応じて、「平均」、「最小」、「合計」を使用することもできます。
Drop Table #PivotRecs
Create Table #PivotRecs (DrawerBox nvarchar(200), DrawerBoxType nvarchar(200), Inches int, Value int)
Insert Into #PivotRecs
select d.Name as DrawerBox
, dt.Name as DrawerBoxType
, di.Inches as Inches
, isnull(dbc.Value, dc.Value) Value
from DrawerBox_C dc
join DrawerBox d
on d.DrawerBoxId = dc.DrawerBoxId
join DrawerBoxInches di
on di.DrawerBoxInchesId = dc.DrawerBoxInchesId
join DrawerBoxType dt
on dt.DrawerBoxTypeId = dc.DrawerBoxTypeId
left join dbo.DrawerBox_Bid_C dbc
on dbc.DrawerBox_C_Id = dc.DrawerBox_C_Id
and dbc.BidId = 1
--Insert Into #PivotRecs
--Select 'Melamine', 'Standard', 12, 3 Union
--Select 'Melamine', 'Standard', 18, 6 Union
--Select 'Melamine', 'Standard', 24, 9 Union
--Select 'Melamine', 'Standard', 30, 12 Union
--Select 'Melamine', 'Standard', 36, 15 Union
--Select 'Melamine', 'File', 12, 5 Union
--Select 'Melamine', 'File', 18, 8 Union
--Select 'Melamine', 'File', 24, 11 Union
--Select 'Melamine', 'File', 30, 14 Union
--Select 'Melamine', 'File', 36, 17
Declare @Inch int, @SQL nvarchar(max),@Inchs nvarchar(max),@SQL2 nvarchar(max), @i int
Set @i = 0
Set @SQL = ''
Set @SQL2 = ''
Set @Inchs = ''
DECLARE iCursor CURSOR
LOCAL
FAST_FORWARD
FOR
Select Distinct Inches From #PivotRecs Order By Inches
OPEN iCursor
FETCH NEXT FROM iCursor INTO @Inch
WHILE (@@fetch_status <> -1)
BEGIN
If(@i=1)
Begin
Set @SQL = @SQL + ',['+Cast(@Inch as nvarchar(4))+']'
Set @Inchs= @Inchs + ','+Cast(@Inch as nvarchar(4))+''
End
If(@i=0)
Begin
Set @SQL = @SQL + '['+Cast(@Inch as nvarchar(4))+']'
Set @Inchs = @Inchs + ''+Cast(@Inch as nvarchar(4))+''
Set @i = 1
End
FETCH NEXT FROM iCursor INTO @Inch
Continue
End
Set @SQL2 =
'Select *
From
(Select Distinct DrawerBox, DrawerBoxType, Inches, Value From #PivotRecs) a
pivot (
max (a.Value)
for Inches in ('[email protected]+'))
as Inches
Order By 1'
Exec SP_ExecuteSQL @SQL2
オプションの数は何ですか? – sagi
5インチ12インチ、18インチ、24インチ、30インチ、36インチ –
GROUP BYを実行し、インチオプションごとにケース式を使用します。 – jarlh