有两个表,分别为t1和t2,其结构和数据如下:
t1:
编号        食品收入         服装收入        
10000       10000             6000
10003       12000            10000
10004        9000             8000
.....        ....             ....t2:
编号    类别编码          收入         
10000   01010000          8000           0101 代表主食1
10000   01020000          2000           0102 代表主食2
10000   02010000          3000           0201 代表服装1
10000   02020000          3000           0202 代表服装2
10003   01030000          2000           0103 代表副食1
10003   01040000          1000           0104 代表副食2   
10003   01020000          9000           
10003   02010000         10000  
10004   01010000          8000
10004   01010000          1000
10004   02020000          4000
10004   02010000          4000
...      .......          ....希望得到如下结果:
编号    主食1     主食2    副食    服装1    服装2    合计   
10000   8000      2000         0     3000     3000    16000
10003      0      9000      3000    10000        0    22000
10004   9000         0         0     4000     4000    17000
.....    ...       ...       ...      ...      ...      ...                       
请高手帮忙解答,谢谢!

解决方案 »

  1.   

    先统计,
    SQL没法直接生成这种表的,除非你SQL很精通
    我闪...
      

  2.   

    TRANSFORM Sum(t2.收入) AS 收入之Sum
    SELECT t2.编号, Sum(t2.收入) AS [总计 收入]
    FROM t2
    GROUP BY t2.编号
    PIVOT t2.类别编码;
      

  3.   

    我沒有見過SQL可以這樣生成﹐我想最好寫一段代碼。
      

  4.   

    sql serevr:
    select 编号 , 主食1 = sum(case when "类别编码 "=0101 then " 收入" else 0 end ),    主食2=... ,   副食 =... ,   服装1=...  ,   服装2=...  ,   合计=sum("收入")
    from t2
    group by "编号"try ro try
      

  5.   

    表结构设计不合理,还要为难SQL
      

  6.   

    SQL SERVER 中可用分组带参数ROLLUP实现统计功能,结果的NULL表示总计select 编号,  类别编码, sum(收入) as 收入小计 from t2
    group by 编号,  类别编码, with rollup
    order by 编号,  类别编码显示结果应该类似
    ------------------------------
    编号    类别编码          收入
    10000   01010000          9000
    10000   01020000          8000
    10000   NULL             17000
    ………………………………………
    20000   01010000          1000
    20000   01020000          2000
    20000   NULL              3000
    ………………………………………
    NULL    NULL             20000
    =========================================
    之后你再可以把上面的结果当作一张表关联T1进行处理
      

  7.   

    首先我要说我个人觉得你的表结构设计存在问题,所以写SQL也就比较麻烦。再有,如其这样苦想代码,不如在表上下功夫。
      

  8.   

    sql serevr:
    select 编号 , 主食1 = sum(case when "类别编码 "=0101 then " 收入" else 0 end ),    主食2=... ,   副食 =... ,   服装1=...  ,   服装2=...  ,   合计=sum("收入")
    from t2
    group by 编号
    order by 编号
      

  9.   

    完全欣赏 lyal21cn(lyal21cn) ( ) 
     我就是这么干的,sql语句完全可以实现