1

我正在寻求在 SELECT 查询中进行一些 Week On Week 比较。

基本代码将在最左边的列中选择不同的区域,然后是以下代码:

SELECT 
   (CASE WHEN TIMESTAMP >= GETDATE() -7 AND TIMESTAMP < GETDATE() 
            THEN ORDER_ID 
            ELSE NULL 
    END) AS THISWEEK

SELECT 
   (CASE WHEN TIMESTAMP >= GETDATE() -14 AND TIMESTAMP < GETDATE() -7 
           THEN ORDER_ID 
           ELSE NULL 
    END) AS LASTWEEK

我真的很想能够拥有(THISWEEK / LASTWEEK) - 1(就像我在 excel 中一样)

这可能吗?

4

1 回答 1

2

这是你想要的吗?

select (thisweek / lastweek) - 1
from (SELECT (CASE WHEN TIMESTAMP >= GETDATE() -7 AND TIMESTAMP < GETDATE() 
                   THEN ORDER_ID 
              END) AS THISWEEK, 
            (CASE WHEN TIMESTAMP >= GETDATE() -14 AND TIMESTAMP < GETDATE() -7 
                  THEN ORDER_ID 
             END) AS LASTWEEK
      from . . .
     ) t

它在子查询中定义变量,然后使用它们。请注意,这并没有任何性能损失;SQL Server 不会“实例化”子查询。

于 2013-06-23T17:15:06.713 回答