0

我刚刚开始学习 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 中有没有一种方法可以保存查询,然后在另一个查询中按名称引用该查询?

4

1 回答 1

1

您可以使用 CTE 在“会话”内执行此操作,但如果没有写访问权限,则无法将任何对象保存到数据库中。

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
于 2014-03-11T22:36:37.130 回答