raw - Seleccionar algunas columnas de un conjunto de resultados como XML
xml en sql server 2012 (1)
Tengo una declaración SELECT
simple que selecciona pocas columnas de una sola tabla:
SELECT id, name, phone, address
FROM tmp_user
¿Es posible cambiar esta consulta para que solo el id
y el name
estén en selección y los detalles restantes estén en un nodo xml?
Esperaba que el resultado de esta selección debería ser
id name extra data
1 Shreedhar <data><phone>...</phone><address>...</address></data>
2 John Doe <data><phone>...</phone><address>...</address></data>
3 Jane Doe <data><phone>...</phone><address>...</address></data>
La última columna de la tabla devuelta debe ser de tipo XML con los datos requeridos. Sé cómo todo el conjunto de resultados se puede convertir a XML utilizando FOR XML. Sin embargo, estoy buscando solo una parte de las columnas que se convertirán. ¿Es posible?
¡Por supuesto! No hay problema, prueba algo como esto:
SELECT
id, name,
(SELECT phone, address
FROM dbo.tmp_user u2
WHERE u2.id = u1.id
FOR XML PATH(''data'')) AS ''ExtraData''
FROM
dbo.tmp_user u1
Esto me da una salida exactamente igual a la que estás buscando.