una raw permitida instrucción for está ejemplos desde crear consultas consulta cláusula archivo xml tsql sql-server-2008-r2

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.