代码之家  ›  专栏  ›  技术社区  ›  Catfish

选择两年内没有生产过的产品

  •  1
  • Catfish  · 技术社区  · 15 年前

    我想买过去两年没做过的产品。我对SQL不是很在行,但这是我刚开始用的,但它不起作用。

    对于这个例子,假设我的模式如下所示

    产品编号,创建日期,创建单位数量。

    我会接受我能得到的任何建议。

    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<=740,它只会给我从一开始到两年前生产的所有产品。

    我要所有的产品,已经生产了至少一次,但不是在过去两年。

    我希望这能澄清一切。

    4 回复  |  直到 15 年前
        1
  •  6
  •   Gary Myers    15 年前

    分组

    select id, max(date)
    from table
    group by id
    having max(date) < add_months(sysdate,-24)
    
        2
  •  3
  •   Aaron    15 年前

    我将使用SQL的dateadd函数。

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

    希望有帮助。

    编辑:如果想按天计算,请使用dateadd(d,-740,getdate())

        3
  •  0
  •   Andy White    15 年前

    也许像这样?

    select id, date
    from table
    where date <= (sysdate - 730);
    
        4
  •  0
  •   Roger Pate Roger Pate    15 年前
    SELECT id FROM table WHERE date + (365*2) <= sysdate;
    

    使用 SELECT id, date, other, columns ... 如果你需要同时得到它们。