2015-04-22 68 views
2

我有一个查询返回多个Itemcodes的一行。其结果是sql服务器逗号将字符串值分隔成一行

Date  group  list of item code 
    2015-04-15 118  FYCT-00063,FYCM-00016,FYCM-00064,FYCF-00018 

它的正常工作,但我需要这样的结果,与周围的每一个代码'FYCT-00063','FYCM-00016','FYCM-00064','FYCF-00018'

查询报价是这样的:

SELECT DISTINCT SS.PostDate,SS.U_Unit,STUFF((
     SELECT ', ',+ CAST(OWOR.ItemCode AS VARCHAR(10)) [text()] 
    FROM OWOR 
    WHERE OWOR.PostDate=SS.PostDate AND OWOR.U_Unit=SS.U_Unit AND  OWOR.Status=SS.Status 
    FOR XML PATH('') , TYPE) 
    .value('.','NVARCHAR(MAX)'),1,2,' ') LISTGroup 
    from owor SS 
    Where SS.PostDate='15.APRIL.15' AND SS.U_Unit='Unit No 2' and SS.Status!='C' 
+0

? – NickyvV

回答

0

试试这个

SELECT DISTINCT SS.PostDate 
    ,SS.U_Unit 
    ,STUFF((
      SELECT ', ' 
       + QUOTENAME(CAST(OWOR.ItemCode AS VARCHAR(10), '''')) 
      FROM OWOR 
      WHERE OWOR.PostDate = SS.PostDate 
       AND OWOR.U_Unit = SS.U_Unit 
       AND OWOR.STATUS = SS.STATUS 
      FOR XML PATH('') 
      ).value('.', 'NVARCHAR(MAX)'), 1, 2, ' ') LISTGroup 
FROM owor SS 
WHERE SS.PostDate = '15.APRIL.15' 
    AND SS.U_Unit = 'Unit No 2' 
    AND SS.STATUS != 'C' 
你在使用的结果为集
+0

它再次给我错误不正确的语法 –

+0

您可以在[SQL小提琴](http://sqlfiddle.com/)中生成场景吗? –

+0

@SafeerKhan:我修改了查询。现在检查... –

1
SELECT DISTINCT SS.PostDate,SS.U_Unit, 
    STUFF((
      SELECT ', ',+ '''' + CAST(OWOR.ItemCode AS VARCHAR(10) + '''') [text()] 
      FROM OWOR 
      WHERE OWOR.PostDate=SS.PostDate 
      AND OWOR.U_Unit=SS.U_Unit 
      AND OWOR.Status=SS.Status 
    FOR XML PATH('') , TYPE) .value('.','NVARCHAR(MAX)'),1,2,' ') LISTGroup 
FROM owor SS 
WHERE SS.PostDate='15.APRIL.15' 
AND SS.U_Unit='Unit No 2' 
AND SS.Status!='C' 
+0

Msg 102,Level 15,State 1,Line 2 'text()'附近的语法不正确。它给我错误 –

+0

现在尝试,增加额外' – Matt

0

尝试这样的:

DECLARE @STRING varchar(max) 
SELECT @STRING = 'FYCT-00063,FYCM-00016,FYCM-00064,FYCF-00018' 

SELECT '''' + REPLACE(@STRING,',',''',''') + '''' 

SQLFIDDLE DEMO

在你的情况下,它会像

select distinct SS.PostDate,SS.U_Unit,'''' + REPLACE(STUFF((
    SELECT ', ',+ CAST(OWOR.ItemCode AS VARCHAR(10)) [text()] 
    FROM OWOR 
    where OWOR.PostDate=SS.PostDate AND OWOR.U_Unit=SS.U_Unit AND OWOR.Status=SS.Status 
    FOR XML PATH('') , TYPE) 
    .value('.','NVARCHAR(MAX)'),1,2,' '),',',''',''') + '''' LISTGroup 
    from owor SS 
    Where SS.PostDate='15.APRIL.15' AND SS.U_Unit='Unit No 2' and SS.Status!='C' 
+1

triphati它现在工作。谢谢 –

+0

@SafeerKhan: - 不客气。你可以接受答案。点击右刻度标记变成绿色 –

相关问题