日期:2014-05-17  浏览次数:20736 次

数据表之间的连接问题(----------------在线等-----------------)
本帖最后由 absd96321 于 2012-11-22 12:03:00 编辑     数据库有两张表A、B。A表和B表通过一个字段关联,例如
    A:1.张三    爱唱歌
       2.张三    爱跳舞

    B:1.张三  爱唱歌   爱跳舞

    如果A表增加了一条数据,变成
    A:1.张三  爱唱歌
       2.张三  爱跳舞
       3.张三  爱打球

    B就应该是:
    B:张三  爱唱歌   爱跳舞  爱打球
    B表的字段数量受A表的数据量影响
    现在的问题就是我怎么实现B表的字段数量随着A表的数据增多而增多?请各位大神帮帮忙。

------最佳解决方案--------------------
--CREATE TABLE test (NAME VARCHAR(10),aihao VARCHAR(20))
--INSERT INTO test 
--SELECT '张三',    '爱唱歌'
--UNION ALL 
--SELECT '张三',    '爱跳舞'
--UNION ALL 
--SELECT '张三',    '爱打球'
--UNION ALL 
--SELECT '李四',    '爱跳舞'
--UNION ALL 
--SELECT '李四',    '爱打球'

--SELECT * FROM test
DECLARE @s NVARCHAR(4000)
SET @s = ''
SELECT  @s = @s + ',' + QUOTENAME('aihao') + '=max(case when [aihao]='
        + QUOTENAME(aihao, '''') + ' then [aihao] else '''' end)'
FROM    test 
GROUP BY aihao
EXEC('select [name]'+@s+' from test group by [name]') 


/*
name       aihao                aihao                aihao
---------- -------------------- -------------------- --------------------
李四                              爱打球                  爱跳舞
张三         爱唱歌                  爱打球                  爱跳舞

(2 行受影响)
*/

------其他解决方案--------------------
谢谢大神了,原来这就是行列转换。。。