terzasek Ответов: 1

Поиск строк с одинаковым идентификатором, но разной датой


Рассмотрим нижеприведенную таблицу: пункт: Б , таблица: заказ а
id   price     date          |   id     cid     date
1    100    2018-01-01       |   1      000    2018-02-15
1    200    2018-02-01       |   1      111    2019-01-01
1    300    2019-03-01       |   2      000    2017-04-01
2    100    2017-04-01       |   1      333    2020-01-01
2    200    2019-05-01       |   3      222    2018-05-01
3    300    2018-06-01       |   1      000    2020-01-01
3    400    2018-03-01       |

Как я могу получить цену заказа на каждую дату вот так:
a.id    a.cid     b.price      a.date
1       000        200         2018-02-15
1       111        200         2019-01-01
2       000        100         2017-04-01
1       333        300         2020-01-01
3       222        400         2018-05-01
1       000        300         2020-01-01


Что я уже пробовал:

SELECT a.id,a.cid,b.price,a.date FROM  Order a
LEFT JOIN Item b ON a.id = b.id
WHERE a.date = (SELECT MIN(b2.date)
FROM   Item b2
WHERE  b2.id  =  a.id 
AND    b2.date >= a.date)

Richard Deeming

Репост
Это слегка переработанная версия вопроса, который вы задали вчера:
https://www.codeproject.com/Questions/1274095/LEFT-JOIN-two-table-each-period-of-date[^]

Если вы хотите отредактировать свой вопрос, чтобы добавить дополнительную информацию, Нажмите зеленую ссылку "улучшить вопрос" и обновите свой вопрос. Не публикуйте обновление как новый вопрос.

terzasek

Хорошо, я удалю одну из тем.

1 Ответов

Рейтинг:
9

Wendelius

Насколько я вижу, это тот же запрос, что и в вашем предыдущем questoin, только переименованные столбцы.

Иначе говоря

SELECT a.id,
       a.cid,
       b.price,
       a.date
FROM         order a      
   LEFT JOIN item  b ON a.id = b.id
WHERE b.date = (SELECT MAX(b2.date)
                FROM   item b2
                WHERE  b2.id   =  a.id
                AND    b2.date <= a.date)


terzasek

Большое вам спасибо, это работа.