2015-04-22 3 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 Fiddle] (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: - Добро пожаловать. Вы можете принять ответ. Правильный галочка станет зеленым, если щелкнуть –

Смежные вопросы