在一个表中有用户编号,用户姓名,收费年度,应收费用,实收费用我想查询 收费年度为2007且应收费用,实收费用都大于0但当收费年度为2008时,应收费用,实收费用又为0的用户编号,用户姓名这个不用函数怎么查询啊?

解决方案 »

  1.   

    SELECT S.用户编号,S.用户姓名 FROM T S WHERE EXISTS(SELECT 1 FROM T WHERE 收费年度='2007' AND应收费用<>0 AND 实收费用<>0 WHERE 用户编号=S.用户编号)
    AND EXISTS(SELECT 1 FROM T WHERE 收费年度='2008' AND应收费用=0 AND 实收费用=0 WHERE 用户编号=S.用户编号)
      

  2.   

    SELECT 用户编号,用户姓名
    FROM 表
    WHERE 应收费用>0 AND 实收费用>0 AND 收费年度='2007'
    UNION ALL
    SELECT 用户编号,用户姓名
    FROM 表
    WHERE 应收费用=0 AND 实收费用=0 AND 收费年度='2008'
      

  3.   

    SELECT 用户编号,用户姓名 FROM T  WHERE ( 收费年度='2007' AND 应收费用 >0 AND 实收费用 >0) or
     (收费年度='2008' AND 应收费用=0 AND 实收费用=0)