基于不同的数据集创建数据集

时间:2017-08-16 15:58:45

标签: reporting-services

我一直在寻找,到目前为止还无法弄清楚这是否可能。

说我有一个数据源,SOURCE1。我从它创建一个数据集,SET1。现在,我希望能够创建另一个使用SET1作为数据源的数据集。有什么方法可以做到这一点吗?我希望能够运行一系列查询,这些查询一起构建可以报告的最终结果。

即: SET1 = SELECT * FROM SOURCE1 WHERE ...

SET2 = SELECT * FROM SET1 WHERE ...

否则,唯一的选择是继续嵌入查询吗?如果可能的话,我宁愿避免使用它,因为它必须运行至少十二个相互构建的查询,因此会变得非常难以理解。

SET 2 = SELECT * FROM(SELECT * FROM SET 1 WHERE ...)WHERE ...

1 个答案:

答案 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

希望有帮助...

相关问题