我一直在寻找,到目前为止还无法弄清楚这是否可能。
说我有一个数据源,SOURCE1。我从它创建一个数据集,SET1。现在,我希望能够创建另一个使用SET1作为数据源的数据集。有什么方法可以做到这一点吗?我希望能够运行一系列查询,这些查询一起构建可以报告的最终结果。
即: SET1 = SELECT * FROM SOURCE1 WHERE ...
SET2 = SELECT * FROM SET1 WHERE ...
否则,唯一的选择是继续嵌入查询吗?如果可能的话,我宁愿避免使用它,因为它必须运行至少十二个相互构建的查询,因此会变得非常难以理解。
SET 2 = SELECT * FROM(SELECT * FROM SET 1 WHERE ...)WHERE ...
答案 0 :(得分:0)
我猜(不知道您的查询)您可以将其作为单个查询编写。惰性方法只是在批处理中运行每个查询,将每个结果输出到一系列临时表,然后为最终输出连接临时表。如果可能效率不高但它会起作用。几乎可以肯定,最好的解决方案是从头开始重写它,因为Access SQL不像T-SQL那样强大或灵活。
所以你需要像......这样的东西。
SELECT * INTO #t1 FROM myTable WHERE blah blah...
SELECT * INTO #t2 FROM myOtherTable WHERE blah blah...
SELECT *
FROM #t1 a
JOIN #t2 b on a.myField = b.myField
您可以将此查询直接放入数据集查询中。它会将每个查询的结果转储到临时表(#t1,#t2等)中,然后最终语句将它们全部加入。
如果您打算在多个地方使用单个查询,那么您也可以考虑为每个查询创建一个视图(如果可能),然后加入SSRS数据集查询中的视图以获得最终结果。
在SSMS中使用类似
的内容创建视图CREATE VIEW AccessQuery1 AS
SELECT * FROM myTable where blah blah...
CREATE VIEW AccessQuery2 AS
SELECT * FROM myOtherTable where blah blah...
然后在SSRS中,您的数据集查询就像是
SELECT *
FROM AccessQuery1 a
JOIN AccessQuery2 b on a.myField = b.myField
希望有帮助...