Tengo esta estructura de tabla. YearPart, MonthPart y DatePart contienen lo que describen ... EX: 2011, 1, 19 (respectivamente)SQL "For XML Path" - resultados anidados
DECLARE @agenda AS TABLE (
PID INT IDENTITY(1,1) PRIMARY KEY,
YearPart int,
MonthPart int,
DayPart int,
lib_title nvarchar(200),
[filename] nvarchar(255),
meta_value nvarchar(2000)
)
Usando estos datos de muestra:
INSERT INTO @agenda VALUES (2010, 12, 4, 'Test Record', '', '')
INSERT INTO @agenda VALUES (2011, 1, 3, 'Another Record', '', '')
INSERT INTO @agenda VALUES (2011, 1, 3, 'Fred Birthday', '', '')
INSERT INTO @agenda VALUES (2011, 1, 4, 'Work Day', '', '')
INSERT INTO @agenda VALUES (2011, 12, 6, '2nd Test Record', '', '')
Lo que quiero, es una salida XML como esto:
<root>
<Year Year="2010">
<Month Month="12">
<Day Day="4">
<Item RecordName="Test Record" RecordID="1" />
</Day>
</Month>
</Year>
<Year Year="2011">
<Month Month="1">
<Day Day="3">
<Item RecordName="Another Record" RecordID="2" />
<Item RecordName="Geoffrey Birthday" RecordID="3" />
</Day>
<Day Day="4">
<Item RecordName="Work Day" RecordID="4" />
</Day>
</Month>
<Month Month="12">
<Day Day="6">
<Item RecordName="2nd Test Record" RecordID="5" />
</Day>
</Month>
</Year>
</root>
Hasta ahora, no he podido hacer que la anidación funcione bien. Normalmente termino con la agrupación desactivada (por ejemplo, obtengo múltiples elementos Año = 2011, cuando debería haber solo uno).
Si esto no se puede hacer, siempre se puede crear el XML en el sitio .NET ...
¡Excelente! Sabía que estaba cerca ... Tenía mis grupos equivocados ... gracias Mikael ... hace exactamente lo que necesitaba. –