如何在sql中检查第一列的行是否大于第二列(使用IF语句)

时间:2018-06-21 11:27:32

标签: sql ssms-2017

我写了一个查询来创建一个只有一列的表

CREATE TABLE ORDER( 
   Order_Date DATE NOT NULL
)

我在列中插入了两个值

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

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

1 个答案:

答案 0 :(得分: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;

请注意,我还将表重命名为OrdersOrder对于表来说确实是个坏名字,因为它既是SQL关键字又是保留字。