如果我只对数据库具有读访问权限,如何在SSMS中构建嵌套查询?

时间:2014-03-11 22:07:38

标签: sql-server ssms ssms-2012

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

1 个答案:

答案 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