[英]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.