【发布时间】:2021-03-26 07:08:30
【问题描述】:
如何在 sql 中查询项目最大日期的前一个日期,如果项目只有一个日期,则返回该日期作为结果。附上样张供参考
【问题讨论】:
-
您尝试过什么来完成这项工作?如果您愿意,可以提供自己的尝试。
如何在 sql 中查询项目最大日期的前一个日期,如果项目只有一个日期,则返回该日期作为结果。附上样张供参考
【问题讨论】:
你的问题有点粗鲁,没有自己的尝试来解决这个问题,但是你去
create table d(
item VARCHAR(1),
expiry_date DATETIME
);
INSERT INTO d(item, expiry_date)
VALUES
('A','2018-03-08'),
('A','2018-03-11'),
('A','2018-03-31'),
('A','2019-01-12'),
('A','2019-03-01'),
('A','2019-03-21'),
('A','2020-03-01'),
('B','2021-03-26'),
('C','2019-03-01'),
('C','2019-03-21'),
('C','2020-03-01');
;WITH maxdates AS (
SELECT
item,
MAX(expiry_date) max_expiry_minus_1
FROM d
WHERE d.expiry_date != (SELECT MAX(expiry_date) FROM d d2 WHERE d.item = d2.item)
GROUP BY item
)
SELECT
d.item,
d.expiry_date,
ISNULL(maxdates.max_expiry_minus_1, expiry_date) expecting_result
FROM d
LEFT OUTER JOIN maxdates
ON d.item = maxdates.item
【讨论】: