显示所有的物料,出去过期物料极其子物料table a 
最顶层的物料  父物料  物料  有效日期  失效日期
a               a      b1   06/10/10   07/10/10
a               a      b2   06/10/10   07/10/10
a               b1     c1   06/10/10    06/11/1
a               c1     d1   06/10/10   07/11/11
a               c1     d2   06/10/10     08/12/12
 其中的 c1已经失效,不显示 ,但是c1的子物料d1,d2没有失效,但是不显示
我还没想到方法 请大家指教!!谢谢

解决方案 »

  1.   

    select * from a
    where 父物料<>'c1'or 有效日期<失效日期
      

  2.   

    SELECT T1.最顶层的物料, T1.父物料,  T1.物料  T1.有效日期  T1.失效日期
    FROM a T1,a T2
    WHERE T1.父物料=T2.物料 AND T2.失效日期<GETDATE()
      

  3.   

    SELECT T1.最顶层的物料, T1.父物料,  T1.物料  T1.有效日期  T1.失效日期
    FROM a T1,a T2
    WHERE T1.父物料=T2.物料 AND T1.失效日期<GETDATE() AND T2.失效日期<GETDATE()
      

  4.   

    --c1为什么失效?
    --失效日期 小于 有效日期的时候就失效吗?select * from a t1
    where 失效日期 <= 有效日期
    and exists (select 1 from a where 物料 = t1.父物料 and 失效日期 > 有效日期)
      

  5.   

    当前日期 GETDATE()<有效日期 或则 GETDATE()>失效日期 就是失效即当前日期不在有效日期和失效日期间就是失效 (有效日期一定小与失效日期)楼上的方法现在试试
      

  6.   

    SELECT T1.最顶层的物料, T1.父物料,  T1.物料  T1.有效日期  T1.失效日期
    FROM a T1,a T2
    WHERE T1.父物料=T2.物料 AND (T1.失效日期<GETDATE() OR GETDATE()<T1.有效日期 )
          AND ( T2.失效日期<GETDATE() OR GETDATE()<T2.有效日期 )
      

  7.   

    这样虽然建立了联系 但是我发现它不最顶层的物料的子料都不显示了
      如 a a  b1
       a   a   b2 
      

  8.   

    SELECT T1.最顶层的物料, T1.父物料, T1.物料, T1.有效日期, T1.失效日期
    FROM a T1,a T2
    WHERE T1.父物料=T2.物料 AND ( T1.有效日期<GETDATE() OR GETDATE()<T1.失效日期 )
          AND ( T2.有效日期<GETDATE() OR GETDATE()<T2.失效日期 )抱歉,时间条件有误!