id 单位名称       专业名称 编制数合计 现有数合计 士官合计
14 2002师2002团 气象 14 0 12
16 2002师2002团2002团 气象 99 0 99
17 2001师2001团 气象 5201 3 5201
12 2001师2001团 通信 4444 444 4444
13 2001师2001团2001营 气象 15 14 15
15 2002师2002团 通信 33 0 33怎么写一条sql语句实现数据汇总,我的意思是比如说 要统计2001师所有的子单位的数据然后插入到这个表中而且统计出来的要按 专业分类 就这要这种结果:id      单位名称 专业名称 编制数合计 现有数合计 士官合计
18 2001师 气象 9645   155        51515
19 2001师 通信 5201    45         2151

解决方案 »

  1.   

    select left(单位名称,5) as 单位名称,sum(编制数合计) as 编制数合计,sum(现有数合计) as 现有数合计,sum(士官合计) as 士官合计 from yourtable group by left(单位名称,5),专业名称  where left(单位名称,5) = '2001师'
      

  2.   

    select left(单位名称,5) as 单位名称,sum(编制数合计) as 编制数合计,sum(现有数合计) as 现有数合计,sum(士官合计) as 士官合计 from yourtable group by left(单位名称,5),专业名称  where 单位名称like  '2001师%'
      

  3.   

    select left(单位名称,5) as 单位名称,sum(编制数合计) as 编制数合计,sum(现有数合计) as 现有数合计,sum(士官合计) as 士官合计 from yourtable group by left(单位名称,5),专业名称  where 单位名称like  '2001师%'
    选是选出来了,可是怎么插入原表啊???
      

  4.   

    select * from yourtable union all select left(单位名称,5) as 单位名称,sum(编制数合计) as 编制数合计,sum(现有数合计) as 现有数合计,sum(士官合计) as 士官合计 from yourtable group by left(单位名称,5),专业名称  where 单位名称like  '2001师%'
      

  5.   

    可能没理解你的意思,可能是这样
    insert into yourtable select left(单位名称,5) as 单位名称,sum(编制数合计) as 编制数合计,sum(现有数合计) as 现有数合计,sum(士官合计) as 士官合计 from yourtable group by left(单位名称,5),专业名称  where 单位名称like  '2001师%'
      

  6.   

    回复人: yanli(严立) ( ) 信誉:100  2004-7-22 15:59:19  得分: 0  
     
     
       
    可能没理解你的意思,可能是这样
    insert into yourtable select left(单位名称,5) as 单位名称,sum(编制数合计) as 编制数合计,sum(现有数合计) as 现有数合计,sum(士官合计) as 士官合计 from yourtable group by left(单位名称,5),专业名称  where 单位名称like  '2001师%'-----------------------------------------
    这样写对么???  
     
      

  7.   

    插入原表:insert into yourtab 
    select left(单位名称,5) as 单位名称,sum(编制数合计) as 编制数合计,sum(现有数合计) as 现有数合计,sum(士官合计) as 士官合计 from yourtable group by left(单位名称,5),专业名称  where left(单位名称,5) = '2001师'
      

  8.   

    我是这样写的但是总是提示 关键字where附近有错误。
      

  9.   

    我单位编制是读的另外一个库的,没问题了。现在的问题就是怎么把选出的结果,按专业名称和单位名称分条插入原表。也就是说 一个单位的一个专业为一条记录,另外一个专业为另外一条记录,一个单位统计上来有几个专业它就有几条记录。insert into yourtab 
    select left(单位名称,5) as 单位名称,sum(编制数合计) as 编制数合计,sum(现有数合计) as 现有数合计,sum(士官合计) as 士官合计 from yourtable group by left(单位名称,5),专业名称  where left(单位名称,5) = '2001师'对么??可否写全点,我用的vb。解决再送100分。
      

  10.   

    不好意思,使我搞错了,把where 子句放在group by 子句的前面。
      

  11.   

    Dim rs4 As New ADODB.Recordset
        sql = "insert into 数据录入_单位编制数 select " & rs3!单位全称 & " as 单位名称,sum(编制数合计) as 编制数合计,sum(现有数合计) as 现有数合计,sum(士官合计) as 士官合计,sum(一期士官) as 一期士官,sum(二期士官) as 二期士官,sum(三期士官) as 三期士官,sum(四期士官) as 四期士官,sum(五期士官) as 五期士官,sum(六期士官) as 六期士官,sum(士官学员) as 士官学员,sum(义务兵) as 义务兵 from 数据录入_单位编制数  where 单位名称='" & rs3!单位全称 & "'group by 单位名称,专业名称 "
     
    rs4.Open sql, conn, 3, 2我这样写的,这是按照我这真实的原表写的,但是提示 as 附近有语法错误啊。
      

  12.   

    第一行
    sql = "insert into 数据录入_单位编制数 select " & rs3!单位全称 & " as 单位名改成sql = "insert into 数据录入_单位编制数 select '" & rs3!单位全称 & "' as 单位名
      

  13.   

    看你的sql的值,然后在查询分析器中执行
      

  14.   

    insert into 数据录入_单位编制数(这里把字段都加上)
      

  15.   

    同意 online(龙卷风V2.0--再战江湖)
    你先将SQL语句打出来,然后在查询分析器里面跑一下。