ID        billid      name
1         1001      前纺
2         1001     加弹
3         1001     织布
3         1000    染色得到参数1001
得到的结果要  前纺-加弹-织布   请问如何处理

解决方案 »

  1.   

    如果是仅得到一个字符串值,可以像下面,如果像返回的是列,用注释掉的语句DECLARE @s NVARCHAR(1000)
    ;WITH t(ID,billid, name)AS (    select 1,'1001',N'前纺' UNION ALL
        select 2,'1001',N'加弹' UNION ALL
        select 3,'1001',N'织布' UNION ALL
        select 3,'1000',N'染色'
    )
    --SELECT stuff((SELECT '-'+t.name FROM t WHERE t.billid='1001' FOR XML PATH('')),1,1,'')
    SELECT @s=isnull(@s+'-','')+t.name FROM t WHERE t.billid='1001'
    SELECT @s
      

  2.   

    SELECT
    a.billid,
    STUFF((SELECT '-'+ CAST(b.name AS VARCHAR) FROM T as b WHERE a.billid = b.billid FOR xml path('')), 1, 1, '') as name
    from T as a
    GROUP BY a.billid