有表A如下
客户名   项目名  进货日期  单价  数量  合计
张三     毛巾     09-1-1    3     5      15
张三     毛巾     09-1-4    3     8      24
张三     肥皂     09-1-2    5     6      30
李四     毛巾     09-1-3    3     5      15
李四     牙刷     09-1-4    2     4       8
王二     牙膏     09-1-4    6     6      36
我想对此表做一下统计,统计结果如下
客户名  项目名   单价   数量   合计
张三    毛巾      3      13    39  .....张三毛巾数量和价钱合计
张三    肥皂      5      6     30
李四    毛巾      3      5     15
李四    牙刷      2      4      8
王二    牙膏      6      6      36
SQL查询语句该怎么写

解决方案 »

  1.   

    select
      客户名,项目名,单价,sum(数量) as 数量,sum(合计) as 合计 
    from a
    group by 客户名,项目名,单价
      

  2.   

    if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb]([客户名] varchar(4),[项目名] varchar(4),[进货日期] datetime,[单价] int,[数量] int,[合计] int)
    insert [tb]
    select '张三','毛巾','09-1-1',3,5,15 union all
    select '张三','毛巾','09-1-4',3,8,24 union all
    select '张三','肥皂','09-1-2',5,6,30 union all
    select '李四','毛巾','09-1-3',3,5,15 union all
    select '李四','牙刷','09-1-4',2,4,8 union all
    select '王二','牙膏','09-1-4',6,6,36
    goselect 客户名,项目名,单价,sum(数量) as 数量,sum(合计) as 合计 
    from tb
    group by 客户名,项目名,单价
    --测试结果:
    /*
    客户名  项目名  单价          数量          合计          
    ---- ---- ----------- ----------- ----------- 
    李四   毛巾   3           5           15
    李四   牙刷   2           4           8
    王二   牙膏   6           6           36
    张三   肥皂   5           6           30
    张三   毛巾   3           13          39(所影响的行数为 5 行)
    */
      

  3.   

    select 客户名,项目名,min(单价),sum(数量),sum(合计)
    from 表A
    group by 客户名,项目名
      

  4.   

    單價不能取MIN,否則如果有多個單價的同一個客戶與項目名,sum(合計)就不放等于單價×sum(數量)之和
      

  5.   

    select
      客户名,项目名,round(sum(数量) + sum(合计)/ sum(数量),2) as 单价,sum(数量) as 数量,sum(合计) as 合计 
    from a
    group by 客户名,项目名
      

  6.   

    select 
        客户名,
        项目名,
        round(sum(数量) + sum(合计)/ sum(数量),2) as 单价,
        sum(数量) as 数量,
        sum(合计) as 合计 
    from a 
    group by 客户名,项目名
      

  7.   

    更正:select 
        客户名, 
        项目名, 
        round((sum(数量) + sum(合计))/ sum(数量),2) as 单价, 
        sum(数量) as 数量, 
        sum(合计) as 合计 
    from a 
    group by 客户名,项目名