首页 > 解决方案 > 在 SSRS 转置上显示数据

问题描述

我想显示一些我已经转置的数据,以便它以 SSRS 顶部的日期为轴心,如下图所示:

转置报告

我已经尝试通过动态 sql 查询来做到这一点,但这只会产生更多问题,因为标题每天都会更改名称。

我希望在 SSRS 上旋转数据非常容易,但我似乎无法弄清楚如何去做。

这是 SSRS 2008 / MSSQL 2012。

编辑 - 当我尝试在“日期”列上进行分组时,它在 ssrs 上出现这样的结果,这不是我想要的点击这里

编辑

我已经尝试了下面的建议,但我不知道你的意思是如何做你所说的?你的意思是在 SQL 中还是在 SSRS 中

这是我的查询

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

CREATE TABLE #Cass_SSRS_DailyMiTable (
    [date] DATE   ,[Total Orders] INT   ,[Orders Done] INT   ,[Pieces picked] INT   ,[Items Picked] INT   ,[Average Items on Order] INT   ,[Picked Today] INT)

INSERT INTO #Cass_SSRS_DailyMiTable (
    date,
    [Total Orders],
    [Pieces picked],
    [Items Picked],
    [Average Items on Order],
    [Picked Today]) VALUES
    ('2017-03-24', 53, 352, 33, 22, 0),
    ('2017-03-25', 351, 23, 235, 52, 0),
    ('2017-03-26', 35, 55, 25, 95, 0)


DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT ',' + QUOTENAME(CONVERT(VARCHAR(100), c.date, 120)) 
            FROM #Cass_SSRS_DailyMiTable c
            ORDER BY c.date ASC
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 

    ';WITH PreUnpivot AS
    (
        SELECT
            C.date, 
            C.[Total Orders],
            C.[Pieces picked],
            C.[Items Picked],
            C.[Average Items on Order],
            C.[Picked Today]
        FROM
            #Cass_SSRS_DailyMiTable AS C
    )
    SELECT
        P.Concept,
        ' + @cols + '
    FROM
        PreUnpivot AS C
        UNPIVOT (
            PivotedValues FOR Concept IN ([Total Orders], [Pieces picked], [Items Picked], [Average Items on Order], [Picked Today])
        ) AS T
        PIVOT (
            MAX(T.PivotedValues) FOR T.Date IN (' + @cols + ')
        ) AS P'


EXEC (@query)

标签: sql-server-2008reporting-servicespivotpivot-table

解决方案


首先,您需要在数据集中有一个通用的通用标识符,以便所有行都具有可以分组的相同标识符。我在数据集中插入并使用了一个名为“id”的字段。

其次插入一个包含一个列组(日期字段)和四个行组(类别组)的矩阵。

对于每个行组,它们必须按通用公共标识符进行分组。(组属性,组上......)

下面的例子:

在此处输入图像描述


推荐阅读