Выбор продуктов, которые не были сделаны в течение 2 лет - PullRequest
1 голос
/ 10 февраля 2010

Я пытаюсь получить продукты, которые не были сделаны за последние 2 года. Я не очень хорош в SQL, но вот с чего я начал, и он не работает.

Давайте скажем для этого примера, что моя схема выглядит следующим образом

prod_id, date_created, num_units_created.

Я приму любой совет, который смогу получить.

select id, (select date from table
            where date <= sysdate - 740) older,
           (select date from table
            where date >= sysdate - 740) newer 
from table 
where newer - older

Я недостаточно ясен.

По сути, я хочу все продукты, которые не были произведены за последние 2 года. Всякий раз, когда продукт производится, линия добавляется. Так что, если бы я просто выполнил sysdate <= 740, он дал бы мне только те продукты, которые были произведены с самого начала до 2 лет назад. </p>

Я хочу, чтобы все продукты были произведены хотя бы один раз, но не за последние 2 года.

Надеюсь, это прояснит.

Ответы [ 4 ]

6 голосов
/ 10 февраля 2010

GROUP BY с HAVING

select id, max(date)
from table
group by id
having max(date) < add_months(sysdate,-24)
3 голосов
/ 10 февраля 2010

Я бы использовал функцию dateadd в SQL.

where date < dateadd(year,-2,getdate())

будет предложением where, которое будет выбирать записи с датой менее 2 лет от текущей даты.

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ: Если вы хотите перейти по дням, используйте dateadd (d, -740, getdate ())

0 голосов
/ 10 февраля 2010
SELECT id FROM table WHERE date + (365*2) <= sysdate;

Используйте SELECT id, date, other, columns ..., если вам нужно получить их одновременно.

0 голосов
/ 10 февраля 2010

Может как то так?

select id, date
from table
where date <= (sysdate - 730);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...