我还没有看到过这样的问题,但如果有问题已经得到解答,请告诉我。我不得不使用存储过程创建导出。不幸的是,目前在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 ('[email protected]+')) 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 ('[email protected]+')) 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)
该错误消息我收到如下:
警告:Null值由聚合或其它SET操作消除。 Msg 8114,级别16,状态5,行1 将数据类型varchar转换为bigint时出错。
我认为你是对的,Nate。我们的DBA刚刚指出(如在五分钟前)我试图将两种不同的列类型放在一起。她目前还没有答复如何使用日期组合来转换各种项目。有什么想法吗? – DataGirl 2011-05-04 15:25:52
我刚刚更新。 – NateMpls 2011-05-04 15:28:50
另一个问题,你需要动态生成的项目? – NateMpls 2011-05-04 15:30:55