使用摘要动态透视sql数据表

z4bn682m  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(433)

我有下面的数据表,它是从一个读取条形码的过程中产生的,并相应地 Package 一些衣服,我想做的是把这个表有这个 Package 过程的总结。
我的源表:

我想要达到的结果是:

我试着用下面的代码来做,但是结果有问题,只返回一个大小和所有颜色。

IF OBJECT_ID('tempdb..##TBL_TEMP') IS NOT NULL
    DROP TABLE ##TBL_TEMP

-- This parameter will hold the dynamically created SQL script
DECLARE @SQLQuery AS NVARCHAR(MAX)

--This parameter will hold the Pivoted Column values
DECLARE @PivotColumns AS NVARCHAR(MAX)

SELECT @PivotColumns = (SELECT DISTINCT [Size])
FROM [dbo].[Tabel]

--Create the dynamic query with all the values for
--pivot column at runtime
--LIST ALL FILEDS EXCEPT PIVOT COLUMN

SET @SQLQuery =
   N'SELECT [ColorName]' +   @PivotColumns + '
   INTO ##TBL_TEMP
   FROM [dbo].[Tabel]

   PIVOT( MAX([Qty])
      FOR [Size] IN (' + @PivotColumns + ')) AS Q'

--Execute dynamic query
EXEC sp_executesql @SQLQuery

/* VIEW PIVOTED TABLE RESULTS */
Select * from ##TBL_TEMP

你能帮我用c来得到结果吗#

0kjbasz6

0kjbasz61#

我认为你在询问中遗漏了一些小事。在透视列和动态查询的select语句中尝试这些小更改。
只需在动态sqlselect查询中添加boxno和stylecode,并为sum[qty]透视数据

SET   @SQLQuery =
 N'SELECT [BoxNo],[StyleCode],[ColorName],' +   @PivotColumns + '
 INTO ##TBL_TEMP
 FROM [dbo].[Tabel]

 PIVOT(SUM([Qty]) 
   FOR [Size] IN (' + @PivotColumns + ')) AS Q'

 --Execute dynamic query
 EXEC sp_executesql @SQLQuery

 --VIEW PIVOTED TABLE RESULTS--
 SELECT * FROM  ##TBL_TEMP

请看我的样本数据截图

请立即尝试以下代码:

Select BoxNo,StyleCode,ColorName,Size,Qty 
INTO #tbl_1 
FROM [dbo].[1202-904200]

DECLARE   @SQLQuery AS NVARCHAR(MAX)
DECLARE  @PivotColumns AS NVARCHAR(MAX)
SELECT  @PivotColumns= ISNULL(@PivotColumns + ',','') + QUOTENAME([Size]) FROM 
(SELECT DISTINCT [Size] FROM #tbl_1) as Size 

--Create the dynamic query with all the values for pivot column at runtime.
SET @SQLQuery =  N'SELECT [BoxNo],[StyleCode],[ColorName],' + @PivotColumns + '
                 INTO ##TBL_TEMP
                 FROM #tbl_1 -- Replace your source here to #tbl_1
                 PIVOT(SUM([Qty]) 
                 FOR [Size] IN (' + @PivotColumns + ')) AS Q'

--Execute dynamic query
EXEC sp_executesql @SQLQuery

/* VIEW PIVOTED TABLE RESULTS */
SELECT * FROM  ##TBL_TEMP

相关问题