我一直在寻找,到目前为止还没有弄清楚这是否可能。
假设我有一个数据源,SOURCE1。我用它创建了一个数据集,SET1。现在,我希望能够创建另一个使用SET1作为数据源的数据集。我有没有办法做到这一点?我希望能够运行一系列一起工作的查询来构建最终结果,该结果将被报告。
例如: SET1 = SELECT * FROM SOURCE1 WHERE ...
SET2 = SELECT * FROM SET1 WHERE ...
否则,唯一的选择是继续嵌入查询吗?如果可能的话,我宁愿避免这样做,因为它会变得非常不可读,因为我必须运行至少12个彼此建立在一起的查询。
SET 2= SELECT * FROM (SELECT * FROM SET 1 WHERE ...)哪里..。
发布于 2017-08-17 21:24:21
我猜(不知道你的查询),你可以把它写成一个查询。惰性方法只是在批处理中运行每个查询,将每个结果输出到一系列临时表中,然后连接临时表以获得最终输出。If可能不是很有效,但它可以工作。最好的解决方案几乎肯定是从头开始重写它,尽管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希望这能帮上忙。
https://stackoverflow.com/questions/45718204
复制相似问题