搜索一下行列装换create table #1 (id int,content nvarchar(256))
insert #1 values(1,'200S,100C,300D ')select a.id,b.dd from (
select id
,content = cast( '<R>'+replace(content,',','</R><R>')+'</R>'  as xml) from #1 )a
outer apply
(
select N.V.value('.','varchar(10)') as dd from a.content.nodes('/R') N(V)
)bid          dd
----------- ----------
1           200S
1           100C
1           300D (3 row(s) affected)

解决方案 »

  1.   

    http://topic.csdn.net/u/20080612/22/c850499f-bce3-4877-82d5-af2357857872.html
      

  2.   

    create table #(id int,content nvarchar(256))
    insert # values(1,'200S,100C,300D ')
    declare @a varchar(2000)
    select @a ='select id,col= '''+replace(content,',',''' from # union all select id,''')+''''+' from #'  from #
    exec(@a)
    drop table #id          col   
    ----------- ----- 
    1           200S
    1           100C
    1           300D 
      

  3.   

    不好意思.可能我没有说清楚.
    例:
    0842S,0900F,1300F,1800F→拆成三笔
    第一笔立即执行0842 ,仅需于当日该时间执行一次
    第二笔首日0900 1300 1800
    第三笔例行0900 1300 1800
    (2)
    2100F,0900 (Q12H)→拆成两笔,0900每隔十二小时执行
    第一笔首日2100
    第二笔        0900  2100
    (3)
    0700,1100,1600 (TIDAC)→就一笔,每天这三个时间都要执行
    (4)
    1200F,1800F,0600,0000 (Q6H)→拆成两笔 0600开始每隔六时小执行
    第一笔首日 1200 1800
    第二笔例行 0000 0600 1200 1800   
    (5)
    0110S (ST)→就一笔于该时间点执行一次,仅需于当日该时间执行一次
    1530      →就一笔例行每天执行2100F→两笔
    第一笔首日2100
    第二笔例行2100
      

  4.   

    如果是拆分,参考如下,后面写的那些内容看不懂./*
    标题:分拆列值
    作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)
    时间:2008-11-20
    地点:广东深圳
    描述有表tb, 如下:
    id          value
    ----------- -----------
    1           aa,bb
    2           aaa,bbb,ccc
    欲按id,分拆value列, 分拆后结果如下:
    id          value
    ----------- --------
    1           aa
    1           bb
    2           aaa
    2           bbb
    2           ccc
    */--1. 旧的解决方法(sql server 2000)
    SELECT TOP 8000 id = IDENTITY(int, 1, 1) INTO # FROM syscolumns a, syscolumns b SELECT A.id, SUBSTRING(A.[values], B.id, CHARINDEX(',', A.[values] + ',', B.id) - B.id)
    FROM tb A, # B
    WHERE SUBSTRING(',' + A.[values], B.id, 1) = ','DROP TABLE #--2. 新的解决方法(sql server 2005) 
    create table tb(id int,value varchar(30))
    insert into tb values(1,'aa,bb')
    insert into tb values(2,'aaa,bbb,ccc')
    go
    SELECT A.id, B.value
    FROM(
        SELECT id, [value] = CONVERT(xml,'<root><v>' + REPLACE([value], ',', '</v><v>') + '</v></root>') FROM tb
    )A
    OUTER APPLY(
        SELECT value = N.v.value('.', 'varchar(100)') FROM A.[value].nodes('/root/v') N(v)
    )BDROP TABLE tb/*
    id          value
    ----------- ------------------------------
    1           aa
    1           bb
    2           aaa
    2           bbb
    2           ccc(5 行受影响)
    */