如何在sql查询中添加总列和另一个总行到底部到pivot表

时间:2014-01-14 03:07:16

标签: sql sql-server join pivot

declare @sql as varchar(max)
declare @sizename as varchar(max)
declare @total as varchar(max)
declare @articleno as varchar(max)

select @sizename =

 QUOTENAME(SizeName)
FROM
(
Select Sizename from SIZESET left join SHIPMENTSIZESET on SIZESET.SizeSetID = SHIPMENTSIZESET.SizeSetID
left join SHIPMENTSCHED on SHIPMENTSCHED.ShipmentSchedID = SHIPMENTSIZESET.ShipmentSchedID 
left join DESIGN on DESIGN.DesignID = SIZESET.DesignID 
left join ARTICLE on ARTICLE.DesignID = DESIGN.DesignID where articleno = 'EZT02'
) as B
order by b.SizeName

SELECT @total = 
coalesce (@total + ', Sum(','Sum(')+ QUOTENAME(cast(Sizename as varchar(10)))+') as '+QUOTENAME(cast(Sizename as varchar(10)))

FROM
(
    Select startdate as [Start Date], enddate as [End Date], SizeName, quantity
from SIZESET left join SHIPMENTSIZESET on SIZESET.SizeSetID = SHIPMENTSIZESET.SizeSetID
left join SHIPMENTSCHED on SHIPMENTSCHED.ShipmentSchedID = SHIPMENTSIZESET.ShipmentSchedID 
left join DESIGN on DESIGN.DesignID = SIZESET.DesignID 
left join ARTICLE on ARTICLE.DesignID = DESIGN.DesignID where articleno = 'EZT02'


) as B

select @articleno = 
 QUOTENAME(SizeName)
FROM
(
Select Sizename from Sizeset join SHIPMENTSIZESET on SHIPMENTSIZESET.SizeSetID = SIZESET.SizeSetID
) as B

set @sql = 'With PivotData As
            (
                Select startdate as [Start Date], enddate as [End Date], SizeName, quantity
                from SIZESET left join SHIPMENTSIZESET on SIZESET.SizeSetID = SHIPMENTSIZESET.SizeSetID
                left join SHIPMENTSCHED on SHIPMENTSCHED.ShipmentSchedID = SHIPMENTSIZESET.ShipmentSchedID 
                left join DESIGN on DESIGN.DesignID = SIZESET.DesignID 
                left join ARTICLE on ARTICLE.DesignID = DESIGN.DesignID where articleno = '+@articleno+'

            )
            Select *
            From
            (
                Select startdate as [Start Date], enddate as [End Date], '+ @sizename +'
                from PivotData
                Pivot
                (
                    Sum(Quantity) for Sizename in('+@sizename+')
                ) as PivotResult

                Union All
                select ''Grand Total'', '+@total+'
                from
                (
                    Select startdate as [Start Date], enddate as [End Date], '+ @sizename +'
                from PivotData
                Pivot
                (
                    Sum(Quantity) for Sizename in('+@sizename+')
                ) as PivotResult

                )tot
            )src
            '
            exec(@sql)

我只是按照一些与创建数据透视表相关的代码但出现错误 列名称“超大”

无效

0 个答案:

没有答案