Объединение нескольких динамических сводных таблиц

Я не видел подобного вопроса, но если есть один, на который был дан ответ, дайте мне знать.

Я должен создать экспорт, используя хранимая процедура. К сожалению, в настоящее время создание этого отчета в SSRS невозможно.

Что мне нужно сделать, так это динамически создать сводную таблицу и объединить ее с другой - или это то, что я думал, сработает.

Необработанные данные работают. аналогично этому (я изменил элементы для защиты данных моей компании):

Data Sample

Они хотят, чтобы данные в отчете выглядели следующим образом (Для экономии места Report Sample

Я создал временную таблицу и две динамические сводные таблицы. Обе таблицы будут работать отдельно, но как только я использую UNION ALL, я получаю сообщение об ошибке (я добавлю это ниже). Я включаю код, который использовал для создания двух точек поворота. Может ли кто-нибудь сказать мне, что я делаю не так?

Можно ли сделать это всего за одну точку поворота?

/*
    Use dynamic SQL to find all 
    Issue Dates for column headings
*/
DECLARE @Jquery VARCHAR(8000)
DECLARE @query VARCHAR(4000)
DECLARE @years VARCHAR(2000)
SELECT  @years = STUFF(( SELECT DISTINCT
                        '],[' + 'Item 1' + ' ' + (IssueDate)
                        FROM    #GroupData GroupData
                        ORDER BY '],[' + 'Item 1' + ' ' + (IssueDate)
                        FOR XML PATH('')
                        ), 1, 2, '') + ']'

SET @query =
'SELECT * FROM
(
    SELECT LocationID, StoreName, StoreState AS State, "Item 1" + " " + (IssueDate) AS IssueDate, MoneyOrder
    FROM #GroupData GroupData
) MoneyOrderIssued
PIVOT (MAX(MoneyOrder) FOR IssueDate
IN ('+@years+')) AS pvt'

DECLARE @queryMOUsed VARCHAR(4000)
DECLARE @MOUsedYear VARCHAR(2000)
SELECT  @MOUsedYear = STUFF(( SELECT DISTINCT
                        '],[' + 'Item 2' + ' ' + (IssueDate)
                        FROM    #GroupData GroupData
                        ORDER BY '],[' + 'Item 2' + ' ' + (IssueDate)
                        FOR XML PATH('')
                        ), 1, 2, '') + ']'

SET @queryMOUsed =
'SELECT * FROM
(
    SELECT LocationID, StoreName, StoreState AS State, "Item 2" + " " + (IssueDate) AS IssueDate, MOUsed
    FROM #GroupData GroupData
)SCRMoneyOrders
PIVOT (MAX(MOUsed) FOR IssueDate
IN ('+@MOUsedYear+')) AS pvt'

SET @Jquery = @query + ' UNION ALL ' +  @queryMOUsed


EXECUTE (@query) -- Only in here to show that this works w/out UNION ALL
EXECUTE (@queryMOUsed) -- Only in here to show that this works w/out UNION ALL

EXECUTE (@Jquery)

Я получаю следующее сообщение об ошибке:

Предупреждение: нулевое значение удаляется агрегатом или другая операция SET. Msg 8114, уровень 16, состояние 5, строка 1 Ошибка преобразования типа данных varchar в bigint.

7
задан DataGirl 4 May 2011 в 14:46
поделиться