Показать данные о транспонировании SSRS - PullRequest
0 голосов
/ 03 июля 2018

Я хочу отобразить некоторые данные, которые я переместил, чтобы они были развернуты на дату вверху в SSRS, как показано на следующем рисунке:

Transposed report

Я уже пытался сделать это с помощью динамического SQL-запроса, но это только создает больше проблем в том, что заголовки меняют имена каждый день.

Я ожидал, что будет очень легко просто раскрутить данные на SSRS, но я не могу понять, как это сделать.

Это SSRS 2008 / MSSQL 2012.

РЕДАКТИРОВАТЬ - Когда я пытаюсь сгруппировать группу в столбце «ДАТА», это выглядит так на ssrs, а это не то, что я хочу Нажмите здесь

EDIT

Я попробовал то, что было предложено ниже, но я не знаю, что вы имеете в виду, как делать то, что вы сказали? Вы имеете в виду в 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)

Ответы [ 2 ]

0 голосов
/ 10 июля 2018

Я использовал ваш оригинальный sql и изменил скрипт соответствующим образом:

ЕСЛИ OBJECT_ID ('tempdb .. # Cass_SSRS_DailyMiTable') не равен NULL DROP TABLE # Cass_SSRS_DailyMiTable

CREATE TABLE #Cass_SSRS_DailyMiTable ( [дата] ДАТА, [Всего заказов] INT, [Заказы выполнены] INT, [Пьесы выбраны] INT, [Позиции выбраны] INT, [Средние позиции в заказе] INT, [Пикированы сегодня] INT, [id] INT)

INSERT INTO #Cass_SSRS_DailyMiTable ( Дата, [Всего заказов], [Кусочки выбраны], [Выбранные предметы], [Средние позиции по заказу], [Выбрано сегодня], [id]) ЦЕННОСТИ («2017-03-24», 53, 352, 33, 22, 0, 1), («2017-03-25», 351, 23, 235, 52, 0, 1), («2017-03-26», 35, 55, 25, 95, 0, 1)

выберите * от # Cass_SSRS_DailyMiTable

Формат определения отчета в моем предыдущем ответе по-прежнему применим.

Если вам требуется дополнительная информация, пожалуйста, напишите мне по электронной почте.

0 голосов
/ 04 июля 2018

Во-первых, вам нужно иметь общий общий идентификатор в вашем наборе данных, чтобы все строки имели одинаковый идентификатор, по которому можно сгруппироваться. Я вставил и использовал поле с именем "id" в наборе данных.

Затем вставьте матрицу с одной группой столбцов (поле даты) и четырьмя группами строк (группы категорий).

Для каждой группы строк они должны быть сгруппированы по общему общему идентификатору (свойства группы, группа в ......)

Пример ниже:

enter image description here

...