select a.商品ID,a.商品名称,a.商品规格
,供应数量=sum(a.供应数量)
,b.建议供应商,a.单位
from 表 a,(
select 数量=max(数量),建议供应商
from 表
group by 建议供应商
)b where a.数量=b.数量 and a.建议供应商=b.建议供应商
group by a.商品ID,a.商品名称,a.商品规格,b.建议供应商,a.单位

解决方案 »

  1.   

    select 商品ID,商品名称,商品规格,sum(供应数量) as 供应数量,max(建议供应商) as 建议供应商,单位 from yourtable group by 商品ID,商品名称,商品规格,单位
      

  2.   

    --错了,改:select a.商品ID,a.商品名称,a.商品规格
    ,供应数量=sum(a.供应数量)
    ,c.建议供应商,a.单位
    from 表 a,(
    select 数量=max(数量),商品ID
    from 表
    group by 商品ID
    )b,表 c
    where b.数量=c.数量 and b.商品ID=c.商品ID
    and a.商品ID=c.商品ID and a.建议供应商=c.建议供应商
    group by a.商品ID,a.商品名称,a.商品规格,c.建议供应商,a.单位
      

  3.   

    简单:
          select f=identity(int,1,1),*  into #t from 表
          where f not in(select min(f) from 表 group by 商品ID)
          drop table #t
      

  4.   

    你可以用两种查询方式,一种是内连接查询,inner join 一种是子查询 select max(XX) from XX……
      

  5.   

    --这个才是对的(我上面的都写错了)select a.商品ID,a.商品名称,a.商品规格,a.供应数量,b.建议供应商,a.单位
    from(
    select a.商品ID,a.商品名称,a.商品规格
    ,供应数量=sum(a.数量)
    ,a.单位
    from 表 a
    group by a.商品ID,a.商品名称,a.商品规格,a.单位
    )a,(
    select a.商品ID,b.建议供应商
    from(
    select 数量=max(数量),商品ID
    from 表
    group by 商品ID
    )a,表 b
    where a.数量=b.数量 and a.商品ID=b.商品ID
    group by a.商品ID,b.建议供应商
    )b where a.商品ID=b.商品ID
      

  6.   

    --测试--测试数据
    create table 表(商品ID int,商品名称 varchar(20),商品规格 varchar(10),数量 money,建议供应商 varchar(10),单位 varchar(10))
    insert 表 select 100042 ,'PVC胶'              ,'50kg/桶' ,100.0000,'中石化','kg'
    union all select 100061 ,'湿材胶'             ,'4kg'     ,100.0000,'中石化','千克'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,200.0000,'22'    ,'辆'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,100.0000,'吴冠英','辆'
    union all select 1020102,'凯跃'               ,'ddd'     ,100.0000,'吴冠英','吨'
    go--查询
    select a.商品ID,a.商品名称,a.商品规格,a.供应数量,b.建议供应商,a.单位
    from(
    select a.商品ID,a.商品名称,a.商品规格
    ,供应数量=sum(a.数量)
    ,a.单位
    from 表 a
    group by a.商品ID,a.商品名称,a.商品规格,a.单位
    )a,(
    select a.商品ID,b.建议供应商
    from(
    select 数量=max(数量),商品ID
    from 表
    group by 商品ID
    )a,表 b
    where a.数量=b.数量 and a.商品ID=b.商品ID
    group by a.商品ID,b.建议供应商
    )b where a.商品ID=b.商品ID
    go--删除测试
    drop table 表/*--测试结果商品ID        商品名称           商品规格    供应数量    建议供应商  单位  
    ----------- ------------------- ---------- ----------- ---------- ------
    10201       一汽中华轿(豪华型)  aa         300.0000    22         辆
    100042      PVC胶                50kg/桶    100.0000    中石化      kg
    100061      湿材胶               4kg        100.0000    中石化      千克
    1020102     凯跃                 ddd        100.0000    吴冠英      吨(所影响的行数为 4 行)
    --*/
      

  7.   

    select a.商品ID,
           a.商品名称,
           a.商品规格,
           sum(a.供应数量) as 供应数量,
           b.建议供应商,
           a.单位 
    from 
           youtable a 
    inner join
           (select 建议供应商,max(数量) as 数量 from youtable group by 建议供应商) b 
    on 
           a.数量=b.数量 and a.建议供应商=b.建议供应商 
    group by 
           a.商品ID,a.商品名称,a.商品规格,b.建议供应商,a.单位
      

  8.   

    --测试--测试数据
    create table 表(商品ID int,商品名称 varchar(20),商品规格 varchar(10),数量 money,建议供应商 varchar(10),单位 varchar(10))
    insert 表 select 100042 ,'PVC胶'              ,'50kg/桶' ,100.0000,'中石化','kg'
    union all select 100061 ,'湿材胶'             ,'4kg'     ,100.0000,'中石化','千克'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,200.0000,'22'    ,'辆'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,100.0000,'吴冠英','辆'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,150.0000,'吴冠英','辆'
    union all select 1020102,'凯跃'               ,'ddd'     ,100.0000,'吴冠英','吨'
    go--查询
    select a.商品ID,a.商品名称,a.商品规格,a.供应数量,b.建议供应商,a.单位
    from(
    select a.商品ID,a.商品名称,a.商品规格
    ,供应数量=sum(a.数量)
    ,a.单位
    from 表 a
    group by a.商品ID,a.商品名称,a.商品规格,a.单位
    )a,(
    select a.商品ID,b.建议供应商
    from(
    select 数量=max(数量),商品ID
    from 表
    group by 商品ID
    )a,表 b
    where a.数量=b.数量 and a.商品ID=b.商品ID
    group by a.商品ID,b.建议供应商
    )b where a.商品ID=b.商品ID
    go--删除测试
    drop table 表/*--测试结果商品ID        商品名称           商品规格    供应数量    建议供应商  单位  
    ----------- ------------------- ---------- ----------- ---------- ------
    10201       一汽中华轿(豪华型)  aa         450.0000    22(这个就不对了,呵呵,吴冠英两次共250)         辆
    100042      PVC胶                50kg/桶    100.0000    中石化      kg
    100061      湿材胶               4kg        100.0000    中石化      千克
    1020102     凯跃                 ddd        100.0000    吴冠英      吨(所影响的行数为 4 行)
    --*/
      

  9.   

    select A.商品ID, max(A.商品名称), max(A.商口规格), B.供应数量, max(A.建议供应商), max(A.单位) from 表 A, 
    ( select 商品ID, sum(数量) 供应数量, max(数量) 数量 from 表 group by 商品ID ) B 
    where A.商品ID = B.商品ID and A.数量 = B.数量 group by A.商口ID, A.数量, B.供应数量
      

  10.   

    --测试--测试数据
    create table 表(商品ID int,商品名称 varchar(20),商品规格 varchar(10),数量 money,建议供应商 varchar(10),单位 varchar(10))
    insert 表 select 100042 ,'PVC胶'              ,'50kg/桶' ,100.0000,'中石化','kg'
    union all select 100061 ,'湿材胶'             ,'4kg'     ,100.0000,'中石化','千克'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,200.0000,'22'    ,'辆'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,100.0000,'吴冠英','辆'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,150.0000,'吴冠英','辆'
    union all select 1020102,'凯跃'               ,'ddd'     ,100.0000,'吴冠英','吨'
    go--查询
    select a.商品ID,a.商品名称,a.商品规格,a.供应数量,b.建议供应商,a.单位
    from(
    select a.商品ID,a.商品名称,a.商品规格
    ,供应数量=sum(a.数量)
    ,a.单位
    from 表 a
    group by a.商品ID,a.商品名称,a.商品规格,a.单位
    )a,(
    select a.商品ID,b.建议供应商
    from(
    select 数量=max(数量),商品ID
    from (select 商品ID,建议供应商,sum(数量) as 数量 from 表 group by 商品ID,建议供应商) x
    group by 商品ID
    )a,(select 商品ID,建议供应商,sum(数量) as 数量 from 表 group by 商品ID,建议供应商) b
    where a.数量=b.数量 and a.商品ID=b.商品ID
    group by a.商品ID,b.建议供应商
    )b where a.商品ID=b.商品ID
    go
      

  11.   

    --上面没有帖全:--测试--测试数据
    create table 表(商品ID int,商品名称 varchar(20),商品规格 varchar(10),数量 money,建议供应商 varchar(10),单位 varchar(10))
    insert 表 select 100042 ,'PVC胶'              ,'50kg/桶' ,100.0000,'中石化','kg'
    union all select 100061 ,'湿材胶'             ,'4kg'     ,100.0000,'中石化','千克'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,200.0000,'22'    ,'辆'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,100.0000,'吴冠英','辆'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,150.0000,'吴冠英','辆'
    union all select 1020102,'凯跃'               ,'ddd'     ,100.0000,'吴冠英','吨'
    go--查询
    select a.商品ID,a.商品名称,a.商品规格,a.供应数量,b.建议供应商,a.单位
    from(
    select a.商品ID,a.商品名称,a.商品规格
    ,供应数量=sum(a.数量)
    ,a.单位
    from 表 a
    group by a.商品ID,a.商品名称,a.商品规格,a.单位
    )a,(
    select a.商品ID,b.建议供应商
    from(
    select 数量=max(数量),商品ID
    from (select 商品ID,建议供应商,sum(数量) as 数量 from 表 group by 商品ID,建议供应商) x
    group by 商品ID
    )a,(select 商品ID,建议供应商,sum(数量) as 数量 from 表 group by 商品ID,建议供应商) b
    where a.数量=b.数量 and a.商品ID=b.商品ID
    group by a.商品ID,b.建议供应商
    )b where a.商品ID=b.商品ID
    go--删除测试
    drop table 表/*--测试结果商品ID        商品名称           商品规格    供应数量    建议供应商  单位  
    ----------- ------------------- ---------- ----------- ---------- ------
    10201       一汽中华轿(豪华型)  aa         450.0000    吴冠英      辆  这样就对了,呵呵,但是写的麻烦
    100042      PVC胶                50kg/桶    100.0000    中石化      kg
    100061      湿材胶               4kg        100.0000    中石化      千克
    1020102     凯跃                 ddd        100.0000    吴冠英      吨(所影响的行数为 4 行)
    --*/
      

  12.   

    --上面的商品写成商口了.--数据
    declare @t table (商品ID int,商品名称 varchar(20),商品规格 varchar(10),数量 money,建议供应商 varchar(10),单位 varchar(10))insert @t select 100042 ,'PVC胶'              ,'50kg/桶' ,100.0000,'中石化','kg'
    union all select 100061 ,'湿材胶'             ,'4kg'     ,100.0000,'中石化','千克'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,200.0000,'22'    ,'辆'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,100.0000,'吴冠英','辆'
    union all select 1020102,'凯跃'               ,'ddd'     ,100.0000,'吴冠英','吨'--查询
    select A.商品ID, max(A.商品名称), max(A.商品规格), B.供应数量, max(A.建议供应商), max(A.单位) from @t A, 
    ( select 商品ID, sum(数量) 供应数量, max(数量) 数量 from @t group by 商品ID ) B 
    where A.商品ID = B.商品ID and A.数量 = B.数量 group by A.商品ID, A.数量, B.供应数量/*
    结果:
    商品ID                                        供应数量                                        
    ----------- -------------------- ---------- --------------------- ---------- ---------- 
    10201       一汽中华轿(豪华型)           aa         300.0000              22         辆
    100042      PVC胶                 50kg/桶     100.0000              中石化        kg
    100061      湿材胶                  4kg        100.0000              中石化        千克
    1020102     凯跃                   ddd        100.0000              吴冠英        吨
    */
      

  13.   

    to 邹建、豌豆:当有两个商品Id相同数量相同 但是建议供应商不同时,你们的好像不行啊
    我以前写的和你们的差不多 ,但是数量一相等数据就出现膨胀了
      

  14.   

    hisi(海山)(随机种子)  可以 等等我再配数据测一下
      

  15.   

    select a.商品ID,a.商品名称,a.商品规格,a.供应数量,b.建议供应商,a.单位
    from(
    select a.商品ID,a.商品名称,a.商品规格
    ,供应数量=sum(a.数量)
    ,a.单位
    from 表 a
    group by a.商品ID,a.商品名称,a.商品规格,a.单位
    )a,(
    select a.商品ID,建议供应商=max(b.建议供应商)
    from(
    select 数量=max(数量),商品ID
    from 表
    group by 商品ID
    )a,表 b
    where a.数量=b.数量 and a.商品ID=b.商品ID
    group by a.商品ID
    )b where a.商品ID=b.商品ID
      

  16.   

    --测试--测试数据
    create table 表(商品ID int,商品名称 varchar(20),商品规格 varchar(10),数量 money,建议供应商 varchar(10),单位 varchar(10))
    insert 表 select 100042 ,'PVC胶'              ,'50kg/桶' ,100.0000,'中石化','kg'
    union all select 100061 ,'湿材胶'             ,'4kg'     ,100.0000,'中石化','千克'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,200.0000,'22'    ,'辆'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,100.0000,'吴冠英','辆'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,350.0000,'吴英1' ,'辆'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,350.0000,'吴英2' ,'辆'
    union all select 10201  ,'一汽中华轿(豪华型)','aa'      ,350.0000,'吴英3' ,'辆'
    union all select 1020102,'凯跃'               ,'ddd'     ,100.0000,'吴冠英','吨'
    go--查询
    select a.商品ID,a.商品名称,a.商品规格,a.供应数量,b.建议供应商,a.单位
    from(
    select a.商品ID,a.商品名称,a.商品规格
    ,供应数量=sum(a.数量)
    ,a.单位
    from 表 a
    group by a.商品ID,a.商品名称,a.商品规格,a.单位
    )a,(
    select a.商品ID,建议供应商=max(b.建议供应商)
    from(
    select 数量=max(数量),商品ID
    from 表
    group by 商品ID
    )a,表 b
    where a.数量=b.数量 and a.商品ID=b.商品ID
    group by a.商品ID
    )b where a.商品ID=b.商品ID
    go--删除测试
    drop table 表/*--测试结果商品ID        商品名称           商品规格    供应数量    建议供应商  单位  
    ----------- ------------------- ---------- ----------- ---------- ------
    10201       一汽中华轿(豪华型)  aa         1350.0000   吴英3       辆
    100042      PVC胶                50kg/桶    100.0000    中石化      kg
    100061      湿材胶               4kg        100.0000    中石化      千克
    1020102     凯跃                 ddd        100.0000    吴冠英      吨(所影响的行数为 4 行)
    --*/