0

I have a select statement and returns one column but many rows. I want to convert that to a single string with commas like below.

 SELECT CODE FROM LG_xxx_CLCARD WHERE CODE < 'KUR' AND CODE > 'CARI1'

this returns

 ASD1
 ASD2
 ASD3

I want to convert this to

 'ASD1','ASD2','ASD3'

How can I do this in SQL?

Gordon Linoff
  • 1,242,037
  • 58
  • 646
  • 786
Arif YILMAZ
  • 5,754
  • 26
  • 104
  • 189

3 Answers3

4

Use the STUFF function:

SELECT STUFF(
    (SELECT ',' + CODE 
     FROM LG_xxx_CLCARD 
     WHERE CODE < 'KUR' AND CODE > 'CARI1' 
     ORDER BY CODE 
     FOR XML PATH ('')), 1, 1, '')

If you need the single quotes, then the following will do the trick:

SELECT STUFF(
    (SELECT ',' + '''' + CODE + '''' 
     FROM LG_xxx_CLCARD 
     WHERE CODE < 'KUR' AND CODE > 'CARI1' 
     ORDER BY CODE 
     FOR XML PATH ('')), 1, 1, '')
How 'bout a Fresca
  • 2,267
  • 1
  • 15
  • 26
1

Try this:

SELECT LISTAGG(CODE , ',') WITHIN GROUP (ORDER BY CODE ) FROM LG_xxx_CLCARD WHERE CODE < 'KUR' AND CODE > 'CARI1'

The result should be

'ASD1','ASD2','ASD3', ..

Wayne
  • 11
  • 1
0
declare @tmp varchar(250)
SET @tmp = ''
select @tmp = @tmp + CODE + ', ' from LG_xxx_CLCARD 
                          WHERE CODE < 'KUR' AND CODE > 'CARI1'
HaveNoDisplayName
  • 8,291
  • 106
  • 37
  • 47