1

我有以下数据表,它是从读取条形码并相应地包装一些服装的过程中生成的,我想要做的是旋转这个表来总结这个包装过程。

我的源表:

桌子

我试图达到的结果是:

结果

我尝试使用以下代码执行此操作,但结果出现问题,该结果仅返回一种尺寸和所有颜色。

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#得到结果吗

4

1 回答 1

2

我认为您在查询中遗漏了一些小东西。在您的数据透视列和动态查询的 Select 语句中尝试这些小的更改。

只需在动态 SQL 选择查询中添加 BoxNo 和 StyleCode 并 PIVOT 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
于 2020-05-23T17:30:50.573 回答