我的查询列出了商店打开和关闭的日期。我想要的是之前的开放日期,例如2014-12-27,它将是2014-12-26。该商店在新年期间没有营业,因此2015-01-02将是2014-12-31。
每当我坐下来编写查询时,我都无处可去,我尝试了subselects,case语句,加入子查询,where子句中的子查询,我仍然无法解决这个问题。对此有任何帮助将不胜感激?
EDIT 澄清列date_nk是一个整数,并添加列" previous_date"显示所需的输出。
date_nk weekday opened previous_open_date
1. 20141226 Friday 1 20141225
2. 20141227 Saturday 0 20141226
3. 20141228 Sunday 0 20141226
4. 20141229 Monday 1 20141226
5. 20141230 Tuesday 1 20141229
6. 20141231 Wednesday 1 20141230
7. 20150101 Thursday 0 20141231
8. 20150102 Friday 1 20141231
9. 20150103 Saturday 0 20150102
10. 20150104 Sunday 0 20150102
答案 0 :(得分:2)
请检查以下内容。
中的示例SELECT
date_nk,
weekday,
opened,
(select max(date_nk) from OpenTable PO
where PO.date_nk < CU.date_nk and
PO.Opened = 1) PrevDate
from OpenTable CU
order by date_nk;
答案 1 :(得分:1)
如果我不知道你,那看起来并不难。
SELECT * FROM table WHERE opened = '1' AND date_nk < 'yourdate' LIMIT 1;
我不知道你的date_nk
字段的类型,你应该考虑使用日期类型,但我认为这应该有用。