0

我写了一个查询来创建一个包含一列的表

CREATE TABLE ORDER( 
   Order_Date DATE NOT NULL
)

我在列中插入了两个值

--Order_Date--
2018-05-21
2018-01-21

如何使用 IF 语句检查第一行是大于还是小于第二行?

4

1 回答 1

3

SQL 表表示无序集。表中没有“第一”行或“第二”行。

如果包含标识列,您可以做您想做的事情:

CREATE TABLE ORDERS ( 
   OrderId IDENTITY(1, 1) PRIMARY KEY,
   Order_Date DATE NOT NULL
);

现在,您可以查看OrderIdOrderDate是否处于相同的顺序。就像是:

select (case when max(case when seqnum = 1 then order_date end) >
                  max(case when seqnum = 2 then order_date end)
             then 'greater than'
             when max(case when seqnum = 1 then order_date end) =
                  max(case when seqnum = 2 then order_date end)
             then 'equal'
             when max(case when seqnum = 1 then order_date end) <
                  max(case when seqnum = 2 then order_date end)
             then 'less than'
        end) as comparison
from (select o.*, row_number() over (order by OrderId) as seqnum
      from orders o
     ) o;

请注意,我还将表重命名为Orders. Order对于表来说,这是一个非常糟糕的名称,因为它是一个 SQL 关键字和一个保留字。

于 2018-06-21T11:31:22.823 回答