@Mercury13
Программист на «си с крестами» и не только

Как получить запас товара на момент T?

Есть БД транзакций, происходящих с товаром, например:
itemcode : VARCHAR
date : DATE
qty : INT
remainder_after : INT

Например, такая.
itemcode    date         qty   remainder_after
normal      2017-01-01   1     10
normal      2017-02-01   2     9
normal      2017-03-01   3     8
old         2017-01-01   4     7
new         2017-03-01   5     6

Можно придумать SQL-запрос (и какие понадобятся индексы), чтобы получить запасы ВСЕХ товаров, скажем, на 15 февраля? Правильный ответ должен быть:
• normal — 9
• old — 7
• new — в выдаче отсутствует
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
longclaps
@longclaps
SELECT T.*
FROM (SELECT
        itemcode,
        max(date) AS date
      FROM T
      WHERE date <= '2017-02-15'
      GROUP BY itemcode) AS A
  JOIN T USING (itemcode, date);

Индекс по (itemcode, date) разумееется, не помешает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы