本帖最后由 z650816 于 2014-03-12 15:22:23 编辑

解决方案 »

  1.   

    ----------------------------------------------------------------
    -- Author  :fredrickhu(小F,向高手学习)
    -- Date    :2014-03-12 15:38:34
    -- Verstion:
    --      Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
    -- Jul  9 2008 14:43:34 
    -- Copyright (c) 1988-2008 Microsoft Corporation
    -- Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
    --
    ----------------------------------------------------------------
    --> 测试数据:[tb]
    if object_id('[tb]') is not null drop table [tb]
    go 
    create table [tb]([集数] varchar(5),[词语] varchar(6),[出现次数] int)
    insert [tb]
    select '第1集','人物',37 union all
    select '第1集','有些',35 union all
    select '第1集','白天',35 union all
    select '第2集','担心',3 union all
    select '第2集','放开',3 union all
    select '第2集','不行',3 union all
    select '第3集','超数',2 union all
    select '第3集','程度',2 union all
    select '第3集','穿衣服',2 union all
    select '第3集','拜拜',2
    --------------开始查询--------------------------
    ;WITH f AS 
    (
    SELECT px=ROW_NUMBER()OVER(PARTITION BY 集数 ORDER BY GETDATE()),* FROM tb 
    )SELECT
    px, 
    MAX(CASE WHEN 集数='第1集'  THEN 词语+LTRIM(出现次数) ELSE NULL END) AS 第1集,
    MAX(CASE WHEN 集数='第2集'  THEN 词语+LTRIM(出现次数) ELSE NULL END) AS 第2集,
    MAX(CASE WHEN 集数='第3集'  THEN 词语+LTRIM(出现次数) ELSE NULL END) AS 第3集
    FROM
    f
    GROUP BY
    px
    ----------------结果----------------------------
    /* px                   第1集                第2集                第3集
    -------------------- ------------------ ------------------ ------------------
    1                    人物37               担心3                超数2
    2                    有些35               放开3                程度2
    3                    白天35               不行3                穿衣服2
    4                    NULL               NULL               拜拜2
    警告: 聚合或其他 SET 操作消除了 Null 值。
    */
      

  2.   

    SELECT [第1集], [第2集], [第3集]
    FROM 
    ( SELECT rowid=ROW_NUMBER()OVER(PARTITION BY [集数] ORDER BY GETDATE())
    ,[集数], [词语次数]=[词语] + LTRIM([次数]) FROM #T_TEST
    ) A 
    PIVOT(MAX([词语次数]) FOR [集数] IN ([第1集], [第2集], [第3集])) T
      

  3.   

    感谢 swq6413  解决了问题! 非常感谢!
      

  4.   

    还是谢谢fredrickhu的热情帮助!