我正在努力获得过去两年没有制造的产品。我对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
我不够清楚。
基本上我想要所有在过去两年里没有生产过的产品。无论何时生产产品,都会添加一条生产线。因此,如果我只是做了sysdate&lt; = 740,它只会给我从2年前开始生产的所有产品。
我想要所有产品至少生产一次,但不是最近两年。
我希望能够清除它。
答案 0 :(得分:6)
GROUP BY with HAVING
select id, max(date)
from table
group by id
having max(date) < add_months(sysdate,-24)
答案 1 :(得分:3)
我使用SQL的dateadd函数。
where date < dateadd(year,-2,getdate())
将是一个where子句,用于选择日期少于当前日期2年的记录。
希望有所帮助。
编辑:如果你想过几天,请使用dateadd(d,-740,getdate())
答案 2 :(得分:0)
也许是这样的?
select id, date
from table
where date <= (sysdate - 730);
答案 3 :(得分:0)
SELECT id FROM table WHERE date + (365*2) <= sysdate;
如果您需要同时获取它们,请使用SELECT id, date, other, columns ...
。