就是想如果productID相同、kaiguan为空时就只显示productid相同记录中的一条。如果productid相同,但kaiguan为1时,就显示出全部productid相同的记录。这个能在SQL语句里面实现吗?

解决方案 »

  1.   

     这样可以满足你的要求.
    (select * from sales where productid in (select distinct productid from sales where kaiguan=1)) union (select * from sales where id in (select min(id) from sales where (kaiguan is null) group by productid))
      

  2.   

    如果字段为空时,就循环显示ProductID全部相同商品出来???看来光看九阴真经是不行了.过两天闭关,得把九阳真经也看看.
      

  3.   


    sql="select A.* from Sales A inner join (select BigTypeID,ProductID,min(ID) as ID from Sales group by BigTypeID,ProductID) B on A.ID=B.ID where A.BigtypeID='"&BigTypeID&"'"jsddj 能不能帮我在现有的语句上面改进?或者帮我用我这样的格式写出来?
      

  4.   

    晕,上面表达错了就是想如果productID相同、kaiguan为空时就只显示productid相同全部记录。如果productid相同,但kaiguan为1时,就只显示出全部productid相同的记录其中的一条。 这个能在SQL语句里面实现吗?
      

  5.   

    4楼的哥们写的语句,我测试一下好象是当kaiguai值为1时,就去掉其中一条。但当我productid相同的有三条,且kaiguan值为1时,就去掉了其中一条,而显示出二条了。
    而我想要的是不论productid相同且kaiguai值为1时,不论有多少条,只显示一条就够了
      

  6.   

    select * 
    from (
    select A.* 
    from Sales A 
    inner join 
    (select BigTypeID,ProductID,min(ID) as ID 
     from Sales
         group by BigTypeID,ProductID) B 
    on A.ID=B.ID 

    where a.kaiguan is null 
    union
    select * from sales where kaiguan = '1') c
    where BigtypeID=@BigTypeID
      

  7.   

    11楼的哥们的语句,我测试了下,好象没有实现kaiguan值为空时全部循环显示出来、值为1时就只显示出一条来。
      

  8.   

    呵呵,那就改成这样吧.再试试.
    (select   *   from   sales  where  kaiguan is null)   union   (select   *   from   sales   where   id   in   (select   min(id)   from   sales   where   (kaiguan=1)   group   by   productid))
      

  9.   

    郁闷,我在查询分析器里面测试可以的,但应用到程序里面就行了
    Sql="(select * from sales where kaiguan is null) union (select * from sales where id in (select min(id) from sales where (kaiguan=1) group by productid))"