例如, 我想要
import_date = DATEADD(DAY, -7, getdate())
(今天前7天)如果确实存在,如果它不存在我想要
import_date = DATEADD(DAY, -6, getdate())
这是今天前6天。如果两者都存在,我想在今天之前7天,如果两者都不存在,我想要最新的日期。
以下是列的示例:
酒店|分段| import_date |收入|抵达日期|
相关日期为 import_date
答案 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