有这个一个例子
编号  价格   供应商
01     1.15    供应商A
02     1.1    供应商A
02     1.1    供应商G
03     1.3    供应商A
04     1.2    供应商A如何得到当编号一样,价格一样时,取供应商字母靠前的一个,使产品编号不重复,结果如下
编号  价格   供应商
01     1.15    供应商A
02     1.1    供应商A
03     1.3    供应商A
04     1.2    供应商A

解决方案 »

  1.   

    select *
    from tb t
    where not exists(select 1 from tb
    where 编号=t.编号 and 价格=t.价格 and 供应商<t.供应商)
      

  2.   

    IF EXISTS (SELECT * FROM sys.objects WHERE NAME ='tb')
        DROP TABLE [tb]
    CREATE TABLE [tb]
    (
        [编号]  VARCHAR(10)  NULL ,
        [价格]  VARCHAR(10)  NULL ,
        [供应商]  varchar(100) NULL
    )
    GO--插入测试数据
    INSERT INTO [tb] ([编号],[价格],[供应商])
        SELECT '01','1.15','供应商A' UNION
        SELECT '02','1.1','供应商A' UNION
        SELECT '02','1.1','供应商G' UNION
        SELECT '03','1.3','供应商A' UNION
        SELECT '04','1.2','供应商A'
    GOSELECT * FROM tb a WHERE NOT EXISTS (SELECT 1 FROM tb WHERE 价格=a.价格 AND REPLACE(供应商,'供应商','')< 
    REPLACE(a.供应商,'供应商',''))
      

  3.   

    select 编号 , 价格 , min(供应商) 供应商 from tb group by 编号 , 价格 
      

  4.   

    CREATE TABLE [tb]
    (
        [编号]  VARCHAR(10)  NULL ,
        [价格]  VARCHAR(10)  NULL ,
        [供应商]  varchar(100) NULL
    )
    GOINSERT INTO [tb] ([编号],[价格],[供应商])
        SELECT '01','1.15','供应商A' UNION
        SELECT '02','1.1','供应商A' UNION
        SELECT '02','1.1','供应商G' UNION
        SELECT '03','1.3','供应商A' UNION
        SELECT '04','1.2','供应商A'
    GOselect 编号 , 价格 , min(供应商) 供应商 from tb group by 编号 , 价格 order by 编号 , 价格drop table tb/*
    编号         价格         供应商                                                                                                  
    ---------- ---------- ---------------------------------------------------------------------------------------------------- 
    01         1.15       供应商A
    02         1.1        供应商A
    03         1.3        供应商A
    04         1.2        供应商A(所影响的行数为 4 行)
    */
      

  5.   


    select 编号,价格,Min(供应商)as 供应商 from A group by 编号,价格 order by 编号