繁体   English   中英

合并两个已保存的查询SQL Server

[英]Combining Two Saved Queries SQL Server

我希望通过主查询将SQL Server中的许多单个查询组合在一起。

我想做这样的事情:

SELECT * FROM Query1

UNION ALL

SELECT * FROM Query2

UNION ALL

SELECT * FROM Query3

看来确实很基础,但是我找不到从另一个查询引用一个查询的语法。 在创建子查询等方面似乎有无穷的资源,但是将所有查询组合成1个主查询将非常混乱且无法使用。 有没有办法按照我尝试的方式进行操作-还是必须将所有内容重写为一个巨大的查询?

这样做没有问题。 您只需要检查所有子查询返回的列是否相同即可。 这是一个例子。

    select * 
    from (select * from sys.dm_os_loaded_modules where description like '%WINRT%') as Q1 
    UNION ALL
    select * 
    from (select * from sys.dm_os_loaded_modules where description like '%RUNTIME%') as Q2

您的问题尚不清楚,但是我将重点关注这一点:

但我找不到引用另一个查询中的查询的语法。

与我所知道的最接近的是CTE:

WITH cte1 AS (
  paste query 1 here
), 
cte2 AS (
  paste query 2 here
), 
cte 3 AS (
  paste query 3 here
)
SELECT * FROM cte1
UNION ALL 
SELECT * FROM cte2
UNION ALL 
SELECT * FROM cte3

并不是真正“从查询中引用查询”,而是您想要的另一种方法是创建一个临时表或表变量,并将每个查询的行一次插入其中。 然后,您的“主查询”将是从临时表/变量中选择所有行。

这是我想出的方法:

SELECT Query1.Stuff, Query1.MoreStuff, Query2.Stuff, Query3.Stuff

FROM (
Query1 SQL
) AS Query1

JOIN

(
Query2 SQL

) AS Query2

on Query1.key = Query2.key

JOIN

(
Query3 SQL
) AS Query3

on Query2.key = Query3.key

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM