sql server - separar - Concatenar valores de columna en una lista separada por comas
separar datos de una misma columna sql (8)
Otra solución dentro de una consulta:
select
Id,
STUFF(
(select ('', "'' + od.ProductName + ''"'')
from OrderDetails od (nolock)
where od.Order_Id = o.Id
order by od.ProductName
FOR XML PATH('''')), 1, 2, ''''
) ProductNames
from Orders o (nolock)
where o.Customer_Id = 525188
order by o.Id desc
(EDITAR: gracias @ user007 por la declaración STUFF)
¿Cuál es la sintaxis de TSQL para formatear mi salida para que los valores de columna aparezcan como una cadena, separados por comas?
Ejemplo, mi mesa CARS tiene lo siguiente:
CarID CarName
----------------
1 Porsche
2 Mercedes
3 Ferrari
¿Cómo obtengo los nombres de los automóviles como: Porsche, Mercedes, Ferrari
Por favor intente esto con el siguiente código:
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+'','' , '''') + CarName
FROM Cars
SELECT @listStr
Puede hacer un atajo usando coalesce
para concatenar una serie de cadenas de un registro en una tabla, por ejemplo.
declare @aa varchar (200)
set @aa = ''''
select @aa =
case when @aa = ''''
then CarName
else @aa + coalesce('','' + CarName, '''')
end
from Cars
print @aa
Puedes hacer esto usando cosas:
SELECT Stuff(
(
SELECT '', '' + CARS.CarName
FROM CARS
FOR XML PATH('''')
), 1, 2, '''') AS CarNames
Si está ejecutando SQL Server 2017 o Azure SQL Database, haga algo como esto:
SELECT STRING_AGG(CarName,'','') as CarNames
FROM CARS
DECLARE @SQL AS VARCHAR(8000)
SELECT @SQL = ISNULL(@SQL+'','','''') + ColumnName FROM TableName
SELECT @SQL
DECLARE @CarList nvarchar(max);
SET @CarList = N'''';
SELECT @CarList+=CarName+N'',''
FROM dbo.CARS;
SELECT LEFT(@CarList,LEN(@CarList)-1);
Gracias a quien en SO me mostró el uso de la acumulación de datos durante una consulta.
SELECT LEFT(Car, LEN(Car) - 1)
FROM (
SELECT Car + '', ''
FROM Cars
FOR XML PATH ('''')
) c (Car)