如果存在最小日期,如何选择最小日期,如果不存在,如何选择最大日期?

时间:2017-11-01 17:23:29

标签: sql-server

例如, 我想要

  import_date =  DATEADD(DAY, -7, getdate()) 

(今天前7天)如果确实存在,如果它不存在我想要

    import_date = DATEADD(DAY, -6, getdate()) 

这是今天前6天。如果两者都存在,我想在今天之前7天,如果两者都不存在,我想要最新的日期。

以下是列的示例:

酒店|分段| import_date |收入|抵达日期|

相关日期为 import_date

2 个答案:

答案 0 :(得分:0)

以下示例说明如何:

CREATE TABLE YourTable ( import_date DATE);

INSERT INTO YourTable VALUES
('2017-10-24'),
('2017-10-25'),
('2017-10-26'),
('2017-10-27'),
('2017-10-28');
   IF NOT EXISTS ( SELECT 1 FROM YourTable WHERE import_date =  CAST(DATEADD(DAY, -7, getdate()) AS DATE)))
       SELECT * FROM YourTable WHERE import_date = CAST(DATEADD(DAY, -6, getdate()) AS DATE)
           ELSE
                   SELECT * FROM YourTable WHERE import_date =  CAST(DATEADD(DAY, -7, getdate()) AS DATE);

结果:

+---------------------+
|     import_date     |
+---------------------+
| 26.10.2017 00:00:00 |
+---------------------+

答案 1 :(得分:0)

细节相当稀疏,但您可以使用它来获取过去7天内导入行的每家酒店的最旧行。

select *
from
(
    select *
        , RowNum = ROW_NUMBER() over (partition by hotel order by import_date desc)
    from YourTable
    where import_date >= dateadd(day, -7, convert(date, getdate()))
) x
where x.RowNum = 1