您可以存储表以便在T-SQL语句中重用吗?

Doo*_*ght 2 sql sql-server

好的,所以我有这个T-SQL语句:

SELECT 
    COUNT(DISTINCT RentalNo) as Count 
FROM 
    RoomRental AS rr 
    LEFT JOIN 
        RoomLinks AS r 
        On (r.RoomNo1 = rr.RoomNo OR r.RoomNo2 = rr.RoomNo) 
        AND r.CostCentreNo = rr.CostCentreNo
WHERE Cancelled = 0 
    AND (rr.RoomNo = @RN OR r.RoomNo2 = @RN OR r.RoomNo1 = @RN) 
    AND rr.CostCentreNo = @CCN 
    AND StartDate = @StartDate
    AND DATEADD(minute,0-SetupTime,StartTime) < @EndBlock 
    AND DATEADD(minute,BreakdownTime,EndTime) > @StartBlock)
Run Code Online (Sandbox Code Playgroud)

有没有什么办法可以存储SELECT *,它,然后迅速(无需再次申请的声明),获得RentalNos或申请其他ANDWHERE条款?

注意,这只是我的SQL查询的一个例子,我现在有一个循环,因为它遍历所有时间块,(在首先查询第一个结束后).

基本上,有很多类似的SQL查询重复.这将是伟大的如果我可以存储一次并操纵它.

干杯,

保罗

Der*_*omm 7

使用SELECT INTO并将结果存储在临时表中(#前缀用于临时表)

SELECT yourcols, ...
INTO #table
FROM yourtables...
Run Code Online (Sandbox Code Playgroud)

然后你可以像任何其他物理存储的表一样引用#table,加入它等等.

  • +1只是一个附加 - 临时表的生命周期一直持续到当前登录会话终止或语句批处理完成,除非你首先在它上面"DROP TABLE". (2认同)
  • 这不适用于OP所要求的内容.他们正在谈论任意回顾性地改变`WHERE`或`SELECT`子句.这当然是不可能的. (2认同)