表dt1:
   ID           adddate                  text1          text2
3234256554 2007-6-5               a1a1a1a1a1a1      a2a2a2a2a2a2
43545364565 2007-06-05      b1b1b1b1b1b1      b2b2b2b2b2b2
3242545          2008-11-15      c1c1c1c1c1c1      c2c2c2c2c2c2
34243          2008-11-20      d1d1d1d1d1d1      d2d2d2d2d2d2
453453433          2008-11-20      e1e1e1e1e1e1      e2e2e2e2e2e2
4454666          2008-11-20      f1f1f1f1f1f1      f2f2f2f2f2f2导入表dt2:得
   ID                    PID     title        adddate     ntext
修改时间(年月日时分秒32位)  3     2007年6月5日      2007-6-5  a1a1a1a1a1a1\nb1b1b1b1b1b1
修改时间(年月日时分秒32位)  3     2008年11月15日    2008-11-15  c1c1c1c1c1c1
修改时间(年月日时分秒32位)  3     2008年11月20日    2008-11-20  d1d1d1d1d1d1\ne1e1e1e1e1e1\nf1f1f1f1f1f1
(ID根据导入时间自动生成,PID固定赋值3,title根据adddate生成,ntext由text1根据adddate group by 而来)请问用T-SQL怎么写?好用的我追加。

解决方案 »

  1.   


    --> 测试数据:[test]
    if object_id('[test]') is not null drop table [test]
    create table [test](
    [ID] bigint,
    [adddate] datetime,
    [text1] varchar(12),
    [text2] varchar(12)
    )
    insert [test]
    select 3234256554,'2007-6-5','a1a1a1a1a1a1','a2a2a2a2a2a2' union all
    select 43545364565,'2007-06-05','b1b1b1b1b1b1','b2b2b2b2b2b2' union all
    select 3242545,'2008-11-15','c1c1c1c1c1c1','c2c2c2c2c2c2' union all
    select 34243,'2008-11-20','d1d1d1d1d1d1','d2d2d2d2d2d2' union all
    select 453453433,'2008-11-20','e1e1e1e1e1e1','e2e2e2e2e2e2' union all
    select 4454666,'2008-11-20','f1f1f1f1f1f1','f2f2f2f2f2f2'SELECT GETDATE() as ID,3 as PID,
    LTRIM(YEAR([adddate]))+'年'+LTRIM(MONTH([adddate]))+'月'+LTRIM(DAY([adddate]))+'日' as title,
    convert(varchar(10),adddate,120) as adddate,[text1] as [ntext]
    INTO dt2
    FROM (SELECT DISTINCT [adddate] FROM [test])A
    OUTER APPLY(
        SELECT [text1]= STUFF(REPLACE(REPLACE(
                (   SELECT [text1] FROM [test] N
                    WHERE [adddate] = A.[adddate]
                    FOR XML AUTO
                 ), '<N text1="', '\n'), '"/>', ''), 1, 2, '')
    )NSELECT * FROM dt2
    /*
    ID PID title adddate ntext
    ------------------------------------------------------------------------------------------------------------------
    2012-06-07 12:12:32.130 3 2007年6月5日 2007-06-05 a1a1a1a1a1a1\nb1b1b1b1b1b1
    2012-06-07 12:12:32.130 3 2008年11月15日 2008-11-15 c1c1c1c1c1c1
    2012-06-07 12:12:32.130 3 2008年11月20日 2008-11-20 d1d1d1d1d1d1\ne1e1e1e1e1e1\nf1f1f1f1f1f1
    */