小编Yam*_*088的帖子

将值存储在 select 作为临时变量并重用它们

我正在尝试清理一个丑陋但可以完成工作的查询。我想知道是否可以在 SELECT 语句中创建一个临时变量。我已经谷歌搜索并没有找到任何帮助。基本上我对查询所做的是将 DateTime 字段与当前时间进行比较,以查看日期是过去还是将来。也许我把一些简单的事情复杂化了,但是从互联网上环顾四周,这似乎是比较 DateTime 字段的唯一方法。

我希望能够重用查询的以下重复部分,因为我必须将它们列出两次才能获得下限值:

(CAST(DATEADD(n, bq.markupDelay, sr.lastviewed) AS FLOAT)
Run Code Online (Sandbox Code Playgroud)

(CAST(GETDATE() AS FLOAT)
Run Code Online (Sandbox Code Playgroud)

这是查询:

    SELECT
          bq.quoteID
        , bq.unsentNumber
        , bq.sendSubsequent
        , bq.unsentDelay
        , sr.contractorID
        , CASE 
            WHEN (CAST(DATEADD(n, bq.markupDelay, sr.lastviewed) AS FLOAT)  - FLOOR(CAST(DATEADD(n, bq.markupDelay, sr.lastviewed) AS FLOAT))) <= (CAST(GETDATE() AS FLOAT) - FLOOR(CAST(GETDATE() AS FLOAT))) 
                THEN 1
                ELSE 0
            END AS 'Add Bid'
        , DATEADD(n, bq.markupDelay, sr.lastviewed) AS 'Send Time'
        , GETDATE() AS 'Time Now'  
        , e.email
        , e.name
    FROM tblCustomerBidQueue bq
    INNER JOIN tblServiceRecords …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server

4
推荐指数
1
解决办法
3827
查看次数

标签 统计

sql-server ×1

sql-server-2008 ×1