原表
id 所属门派 姓名 属性 属性值
1 武当 张三丰 悟性 252
5 武当 张三丰 体力 8
6 武当 张三丰 智力 8
7 武当 张三丰 精神 4
8 武当 张三丰 内力 2
10 武当 张三丰 运气 8
15 武当 张无忌 悟性 126
19 武当 张无忌 体力 12
20 武当 张无忌 智力 8
21 武当 张无忌 精神 9
22 武当 张无忌 内力 8
24 武当 张无忌 运气 16
29 武当 唐三 悟性 0
33 武当 唐三 体力 24
34 武当 唐三 智力 20
35 武当 唐三 精神 8
36 武当 唐三 内力 4
38 武当 唐三 运气 16
43 少林 海登 悟性 32
47 少林 海登 体力 2
48 少林 海登 智力 2
49 少林 海登 精神 0
50 少林 海登 内力 0
52 少林 海登 运气 4
57 少林 无名老僧 悟性 32
61 少林 无名老僧 体力 2
62 少林 无名老僧 智力 1
63 少林 无名老僧 精神 0
64 少林 无名老僧 内力 0
66 少林 无名老僧 运气 8
71 峨嵋 章子怡 悟性 32
75 峨嵋 章子怡 体力 3
76 峨嵋 章子怡 智力 0
77 峨嵋 章子怡 精神 0
78 峨嵋 章子怡 内力 0
80 峨嵋 章子怡 运气 4
求sql语句 使结果为所属门派 悟性和 体力和 智力和 精神和 内力和 运气和
武当 378 44 36 21 14 40
少林 64 4 3 0 0 12
峨嵋 32 3 0 0 0 4
十分感谢

解决方案 »

  1.   

    数据太多,我就不全造了。CREATE TABLE tb (所属门派 VARCHAR(10), 姓名 VARCHAR(10), 属性 VARCHAR(10), 属性值 INT )
    INSERT INTO TB
    SELECT '武当', '张三丰', '悟性', 252
    UNION ALL SELECT '武当', '张三丰', '体力', 8
    UNION ALL SELECT '少林', '海登', '体力', 2
    UNION ALL SELECT '少林', '海登', '悟性', 32DECLARE @s NVARCHAR(4000)
    SET @s = ''
    SELECT  @s = @s + ',' + 属性 + '和' + '=sum(case when [属性]='
            + QUOTENAME([属性], '''') + ' then [属性值] else 0 end)'
    FROM    tb
    GROUP BY 属性
    EXEC('select [所属门派]'+@s+' from tb group by [所属门派]')/*
    所属门派       体力和         悟性和
    ---------- ----------- -----------
    少林         2           32
    武当         8           252(2 行受影响)*/
      

  2.   


    万分感谢~! 学到了不少知识
    有些地方需要做一下修改,因为有些字段里的内容可能包含  -  /  、........等等符号,可能导致exec出错,所以加上引号就可以了DECLARE @s NVARCHAR(4000) 
    SET @s = ''
    SELECT  @s = @s + ',' + QUOTENAME(属性) + '和' + '=sum(case when [属性]='       
     + QUOTENAME([属性], '''') + ' then [属性值] else 0 end)'
    FROM    tb 
    GROUP BY 属性 EXEC('select [所属门派]'+@s+' from tb group by [所属门派]') 这样就更稳妥了,再次感谢!!
      

  3.   

    打错了
    DECLARE @s NVARCHAR(4000) 
    SET @s = ''
    SELECT  @s = @s + ',' + QUOTENAME(属性 + '和') + '=sum(case when [属性]='       
     + QUOTENAME([属性], '''') + ' then [属性值] else 0 end)'
    FROM    bb
    GROUP BY 属性 
    EXEC('select [所属门派]'+@s+' from bb group by [所属门派]') 
      

  4.   

    无聊的游戏!这个破SQL,卸载不完全,上来淘宝,有宝的朋友 加我Q511203763  谢谢,我送您农牧场礼物