紧急求助:有什么简单的方法把第一个表变成第二个表的样式
相同关键词的情况下分类合并,数量取最大的关键词
关键词     分类    数量
=======================
已付款     买家      3
已付款     支付      4
发货       卖家      5关键词     分类         数量
============================ 
已付款     买家/支付     4
发货       卖家          5

解决方案 »

  1.   

    --> 测试数据:[test]
    if object_id('[test]') is not null drop table [test]
    create table [test]([关键词] varchar(6),[分类] varchar(4),[数量] int)
    insert [test]
    select '已付款','买家',3 union all
    select '已付款','支付',4 union all
    select '发货','卖家',5
    select [关键词],[分类],[数量] from(
    SELECT *FROM (SELECT  [关键词],SUM([数量]) as [数量] FROM [test] group by [关键词])A
    OUTER APPLY(
        SELECT [分类]= STUFF(REPLACE(REPLACE(
                (   SELECT [分类]  FROM [test] N
                    WHERE [关键词] = A.[关键词]
                    FOR XML AUTO
                 ), '<N 分类="', '/'), '"/>', ''), 1, 1, '')
    )N)a
    /*
    关键词 分类 数量
    发货 卖家 5
    已付款 买家/支付 7
    */
      

  2.   


    IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'tba')
    BEGIN
    DROP TABLE tba
    END
    GO
    create table tba
    ([关键词] varchar(6),[分类] varchar(4),[数量] int)insert tba
    select '已付款','买家',3 union all
    select '已付款','支付',4 union all
    select '发货','卖家',5
    select B.[关键词],
    stuff(( select '/'+ [分类] 
    from tba AS A
    where A.关键词 = B.关键词 for xml path('')),1,1,'') as [分类],
    MAX([数量]) AS [数量]
    from tba AS B
    GROUP BY B.[关键词]关键词 分类 数量
    发货 卖家 5
    已付款 买家/支付 4