我刚刚开始学习SQL Server Management Studio。我熟悉在Access中构建嵌套查询,例如:
Query1
(获取数据集)
select t1.a,t2.b,t1.abc,t2.def from tbl_FNA t1
inner join
tbl_DMZ t2 on
t1.b=t2.b
Query2
(仅返回来自Query1
的行,其最小值为b
)
select q1.* from Query1 q1
inner join
(select a,min(b) as min_b from Query1 group by a) q2
on
q1.a=q2.a
and
q1.b=q2.min_b
这样可以更容易地调试代码,因为如果Query1
出现问题,我只需要在一个地方而不是3个地方进行更改。
我知道如果我对数据库有写访问权限,我可以创建可以帮助解决这个问题的视图和/或存储过程。但在这种情况下,我有只读访问权限。
SSMS中是否有办法保存查询,然后在另一个查询中按名称引用该查询?
答案 0 :(得分:1)
您可以使用CTE在'session'中执行此操作,但如果没有写访问权限,则无法将任何对象保存到数据库中。
WITH q2 AS
(select a,min(b) as min_b from Query1 group by a)
select q1.* from
Query1 q1
inner join
q2
on
q1.a=q2.a
and
q1.b=q2.min_b
SELECT * FROM q2
SELECT TOP 1000 * FROM q2