2017-08-16 143 views
0

我一直在寻找,因此至今未能弄清楚这是否可能。根据不同的数据集创建数据集

说我有一个数据源,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

@AlanSchofield基本上,我在Access中有一系列的查询,我希望切换到通过SSRS中的查询创建。我想要创建多个数据集的主要原因是因为我不确定是否可以通过使用一个查询来生成目标数据集,它需要一系列约15个查询才能获得最终的最终结果,而且看起来似乎像试图将所有15个查询合并到一个大规模查询中一样,可以更轻松地逐步创建数据集。 –

回答

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 

希望帮助...