SQL para Multiples filas en una sola columna


Cuando necesitamos unir el resultado de múltiples filas en una sola columna tenemos una solución práctica con XML PATH y STUFF. Funciona desde SQL Server 2005 en adelante.

Ejemplo con 1 tabla Clientes

Clientes
Clientes

Mediante una intruccion select queremos obtener esto:

Resultado
Resultado

Simplemente escribimos:

SELECT a.ciudad
	,stuff((
			SELECT ', ' + b.Nombre
			FROM #Clientes b
			WHERE b.Ciudad = a.Ciudad
			FOR XML PATH('')
			), 1, 1, '') Nombres
FROM #Clientes a
GROUP BY a.Ciudad
ORDER BY a.Ciudad

Ahora con 2 tablas, añadimos una tabla Ciudades con la descripción de cada ciudad:

Ciudades
Ciudades

Ahora vamos a mostrar el siguiente resultado:

Resultado 2 tablas
Resultado 2 tablas

Escribimos la siguiente instrucción:

SELECT a.Cod
	,a.Descrip
	,stuff((
			SELECT ', ' + b.Nombre
			FROM #Clientes b
			WHERE b.Ciudad = a.Cod
			FOR XML PATH('')
			), 1, 1, '') Nombres
FROM #Ciudades a
GROUP BY a.Cod
	,a.Descrip
ORDER BY a.Descrip

Para entender como funciona debemos entender primero como funciona el XML PATH, para eso escribamos lo siguiente:

SELECT Nombre
FROM #Clientes
FOR XML PATH('')

Esto nos devuelve un XML de dicha columna, ahora lo que hacemos mediante el STUFF es concatenar el resultado de cada campo y separarlo por comas. A continuación el script para crear las tablas:

CREATE TABLE #Clientes (
	Cod VARCHAR(3)
	,Nombre VARCHAR(4)
	,Ciudad VARCHAR(6)
	)

INSERT INTO #Clientes (
	Cod
	,Nombre
	,Ciudad
	)
VALUES (
	'001'
	,'John'
	,'Cali'
	)

INSERT INTO #Clientes (
	Cod
	,Nombre
	,Ciudad
	)
VALUES (
	'002'
	,'Mago'
	,'Cali'
	)

INSERT INTO #Clientes (
	Cod
	,Nombre
	,Ciudad
	)
VALUES (
	'003'
	,'Soga'
	,'Cali'
	)

INSERT INTO #Clientes (
	Cod
	,Nombre
	,Ciudad
	)
VALUES (
	'004'
	,'Mega'
	,'Cali'
	)

INSERT INTO #Clientes (
	Cod
	,Nombre
	,Ciudad
	)
VALUES (
	'005'
	,'Luga'
	,'Bogota'
	)

INSERT INTO #Clientes (
	Cod
	,Nombre
	,Ciudad
	)
VALUES (
	'006'
	,'Maka'
	,'Bogota'
	)

CREATE TABLE #Ciudades (
	Cod VARCHAR(6)
	,Descrip VARCHAR(40)
	)

INSERT INTO #Ciudades (
	Cod
	,Descrip
	)
VALUES (
	'Cali'
	,'La Capital mundial de la Salsa'
	)

INSERT INTO #Ciudades (
	Cod
	,Descrip
	)
VALUES (
	'Bogota'
	,'2600mts mas cerca de las estrellas'
	)

3D printing / Impresión 3D


What is 3D printing? Simply, this means create 3D models from scratch using specific materials like plastic, polyester, pvc, acrylic, metals…. How this works? using a computer program you can specify to the printer what model must be printed (can be almost any material product for instance spoon, fork, knife, plate, cup, box, table, chair, square, etc., even prosthesis), then the model will be created by adding layers with the melted solution from the raw materials in use. Why the boom of this 3D printing? because now is available for everyone with enough money to buy a 3D printer (starting at $3,000USD). Before this technology was only available for big companies. Check the following video that shows how to create a whistle using a regular 3D printer. If you saw the “replication machine” in Star Trek series, this is the beginning of that machine.

¿Qué es la impresión en 3D? Simplemente, esto significa crear modelos 3D a partir de cero, utilizando materiales específicos como el plástico, poliéster, PVC, acrílico, metales …. ¿Cómo funciona esto? utilizando un programa de ordenador que puede especificar a la impresora qué modelo deberá ser impreso (que puede ser casi cualquier producto material por ejemplo una cuchara, tenedor, cuchillo, plato, copa, caja, mesa, silla, cuadrado, etc., incluso prótesis), entonces el modelo se creará mediante la adición de capas utilizando la solución fundida de las materias primas utilizadas. ¿Por qué el auge de esta impresión en 3D? porque ahora está disponible para todo el mundo con el dinero suficiente para comprar una impresora 3D (Iniciando a más o menos USD $3,000). Antes de esta tecnología sólo estaba disponible para las grandes empresas. Compruebe el siguiente video que muestra cómo crear un silbato utilizando una impresora normal en 3D. Si usted vió la “máquina replicadora” de la serie viaje a las estrellas (Star Trek) esto es el comienzo de esa máquina.