选择2年内未生产的产品

时间:2010-02-09 22:29:22

标签: sql oracle

我正在努力获得过去两年没有制造的产品。我对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年前开始生产的所有产品。

我想要所有产品至少生产一次,但不是最近两年。

我希望能够清除它。

4 个答案:

答案 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 ...