代号             重量                      车号         车次
a01              10                        a1            b1
a02              20                        a2            b2
a02              10                        a3            b2
a03              10                        a3            b3
a04              20                        a2            b2
a04              30                        a4            b2
希望达到如下效果
车次               重量                        次数
b1                 10                          1
b2                 80                          2
b3                 10                          1即代号相同的视为同一车次。
请帮帮忙,谢谢了

解决方案 »

  1.   

    SELECT 车次,SUM(重量) AS 重量, COUNT(*) AS 次数
    FROM 表名
    GROUP BY 车次
      

  2.   

    select 车次,sum(重量),count(*) from tablename
    group by 车次
      

  3.   

    SELECT 车次,SUM(重量) AS 重量, COUNT(*) AS 次数 
    FROM 表名 
    GROUP BY 车次
    up
      

  4.   

    SELECT 
    (SELECT TOP 1 车次 FROM 表名 A  WHERE 代号 = A.代号) AS 车次 ,SUM(重量) AS 重量, COUNT(*) AS 次数
    FROM 表名
    GROUP BY 代号
      

  5.   

    select a.车次, sum(a.重量) as 重量 from 表 a group by 车次
    inner join
    (select b.车次 as 车次, count(*) as 次数 from 表 b group by b.代号) t
    on a.车次 = t.车次等会再调试一下
      

  6.   


    b1         10 1
    b1         30 2
    b1         10 1
    b1         50 2结果不对啊。第1列都是b1了。。
      

  7.   

    SELECT 
    (SELECT TOP 1 车次 FROM 表名 A  WHERE B.代号 = A.代号) AS 车次 ,SUM(重量) AS 重量, COUNT(*) AS 次数 
    FROM 表名 B
    GROUP BY 代号 这样看看.
      

  8.   

    declare @testTable table(num varchar(20) , Weight int , carnum varchar(20) , carbout varchar(20))
    insert @testTable values('a01',10,'a1','b1')
    insert @testTable values('a02',20,'a2','b2')
    insert @testTable values('a02',10,'a3','b2')
    insert @testTable values('a03',10,'a3','b3')
    insert @testTable values('a04',20,'a2','b2')
    insert @testTable values('a04',30,'a4','b2')select carbout,Sum(Weight) as Weight,Count( Distinct num) as boutCount   from @testTable
    group by carbout
      

  9.   

    楼上的方法正确,学习了.本来不知道count里面还能用distinct.
      

  10.   

    在group by 的Count中取重复即可,不用对表进行二次。
      

  11.   

    --创建测试环境
    create table vechile_log(代号 varchar(10),重量 int,车号 varchar(10),车次 varchar(10));
    insert into vechile_log
    select 'a01',10,'a1','b1'
    union all select 'a02',20,'a2','b2'
    union all select 'a02',10,'a3','b2'
    union all select 'a03',10,'a3','b3'
    union all select 'a04',20,'a2','b2'
    union all select 'a04',30,'a4','b2'--统计
    select 车次,SUM(重量) as 重量,COUNT(1) as 次数
    from vechile_log
    group by 车次--清除测试环境
    drop table vechile_log--结果
    /*
    车次 重量 次数
    b1 10 1
    b2 80 4
    b3 10 1*/
      

  12.   

    不好意思,没看清楚,应该是这样:
    --创建测试环境
    create table vechile_log(代号 varchar(10),重量 int,车号 varchar(10),车次 varchar(10));
    insert into vechile_log
    select 'a01',10,'a1','b1'
    union all select 'a02',20,'a2','b2'
    union all select 'a02',10,'a3','b2'
    union all select 'a03',10,'a3','b3'
    union all select 'a04',20,'a2','b2'
    union all select 'a04',30,'a4','b2'--统计
    select 车次,SUM(重量) as 重量,COUNT(distinct 代号) as 次数
    from vechile_log
    group by 车次--清除测试环境
    drop table vechile_log--结果
    /*
    车次 重量 次数
    b1 10 1
    b2 80 2
    b3 10 1*/
      

  13.   

    COUNT(distinct 代号) as 次数 
      

  14.   

    COUNT(distinct 代号)   学习了   这真的没试过的  
      

  15.   

    学习,COUNT(distinct 代号) as 次数.
      

  16.   

    create table  #tp
    (代号 varchar(10),
    重量 int,
    车号 varchar(10),
    车次 varchar(10)
    )insert into #tp values('a01',10,'a1','b1')
    insert into #tp values('a02',20,'a2','b2')
    insert into #tp values('a02',10,'a3','b2')
    insert into #tp values('a03',10,'a3','b3')
    insert into #tp values('a04',20,'a2','b2')
    insert into #tp values('a04',30,'a4','b2')select * from #tpselect a.车次,sum(a.重量) as 重量,count(1) 次数
    from

    select 代号,车次,sum(重量) as 重量
    from #tp 
    group by 代号,车次
    ) as agroup by a.车次order by a.车次
    drop table #tp