rowid    matname   sup          tt                  price     type
65         鲜松叶      张绪东  2013-12       2.03     参考价
66      鲜松叶   张勋太  2013-12       2.03     参考价
67         鲜松叶   黄方财  2013-12       2.03     订单价
68      鲜松叶   张勋太  2013-12       2.03     订单价
69         鲜松叶   张绪东  2013-12       2.03     订单价请教高手如何在查询中 去掉   (  品名,供应商,时间,价格 一样 )并且 type是参考价 的行
比如在这里需要去掉 65,66
不是delete哈。。要select 出来。。
谢谢

解决方案 »

  1.   

    SELECT *
    FROM TB T1
    WHERE NOT EXISTS
    (SELECT 1 FROM TB T2 WHERE T1.type='参考价'AND T2.type='订单价'
    AND T1.matname=T2.matname AND T1.sup=T2.sup
    AND T1.tt=T2.tt AND T1.price=T2.price)不知道是不是这个意思,兼容SQL2000
      

  2.   

    with a(rowid,matname,sup,tt,price,type) as
    (
     select 65,'鲜松叶','张绪东','2013-12',2.03,'参考价' union all
     select 66,'鲜松叶','张勋太','2013-12',2.03,'参考价' union all
     select 67,'鲜松叶','黄方财','2013-12',2.03,'订单价' union all
     select 68,'鲜松叶','张勋太','2013-12',2.03,'订单价' union all
     select 69,'鲜松叶','张绪东','2013-12',2.03,'订单价'
    )
    select b.rowid,b.matname,b.sup,b.tt,b.price,b.type from 
    (select *,ROW_NUMBER()over(partition by matname,sup,tt,price order by type desc) 
    as tid from a ) as b  where b.type<>'参考价' and b.tid=1/**
    rowid,matname,sup,tt,price,type
    -----------------------------------------------
    67 鲜松叶 黄方财 2013-12 2.03 订单价
    69 鲜松叶 张绪东 2013-12 2.03 订单价
    68 鲜松叶 张勋太 2013-12 2.03 订单价
    ----------------------------------------------
    **/
      

  3.   

    直接 where type<>'参考价' 不就完事儿了
      

  4.   


    select  品名,供应商,时间,价格  , max(id)  id
    from mytable 
    group by  品名,供应商,时间,价格 
      

  5.   


    create table ch
    (rowid int,matname varchar(15),sup varchar(15),tt varchar(15),price decimal(5,2),type varchar(10))insert into ch
     select 65,'鲜松叶','张绪东','2013-12',2.03,'参考价' union all
     select 66,'鲜松叶','张勋太','2013-12',2.03,'参考价' union all
     select 67,'鲜松叶','黄方财','2013-12',2.03,'订单价' union all
     select 68,'鲜松叶','张勋太','2013-12',2.03,'订单价' union all
     select 69,'鲜松叶','张绪东','2013-12',2.03,'订单价'
    select * 
     from ch
     where rowid not in
     (select a.rowid 
      from ch a
      where exists(select 1 
                   from ch b 
                   where b.rowid<>a.rowid and b.matname=a.matname 
                   and b.sup=a.sup and b.tt=a.tt and b.price=a.price)
      and a.type='参考价')/*
    rowid       matname         sup             tt              price            type
    ----------- --------------- --------------- --------------- --------------- ----------
    67          鲜松叶             黄方财             2013-12         2.03           订单价
    68          鲜松叶             张勋太             2013-12         2.03           订单价
    69          鲜松叶             张绪东             2013-12         2.03           订单价(3 row(s) affected)
    */