Я не видел подобного вопроса, но если на него есть ответ, пожалуйста, дайте мне знать.
Я должен создать экспорт, используя хранимую процедуру. К сожалению, в настоящее время создание этого отчета в SSRS невозможно.
Что мне нужно сделать, так это динамически создать сводную таблицу и объединить ее с другой - или я думал, что это сработает.
Необработанные данные работают примерно так (я изменил элементы для защиты данных своей компании):
Они хотят, чтобы данные в отчете выглядели так: (Чтобы сэкономить место, я не использовал все даты, но вы можете понять):
Я создал временную таблицу и создал две динамические сводные таблицы. Обе таблицы будут работать отдельно, но как только я использую 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.
Сообщение 8114, уровень 16, состояние 5, строка 1
Ошибка преобразования типа данных varchar в bigint.