Иерархические данные на сервере SQL могут быть получены с использованием FOR XML. В этом случае вам просто нужно написать запрос для объединения таблиц, тогда отношения родитель-потомок проявятся как вложенные элементы XML:
DECLARE @sites TABLE ( ID INT, Name VARCHAR(50) )
INSERT INTO @sites
VALUES ( 1, 'abc' ),
( 2, 'def' )
DECLARE @siteEnergy TABLE
(
SiteFK INT,
Month INT,
Energy INT
)
INSERT INTO @siteEnergy
VALUES ( 1, 1, 50 ),
( 1, 2, 49 ),
( 1, 3, 50 ),
( 2, 1, 33 ),
( 2, 2, 34 ),
( 2, 3, 50 )
SELECT *
FROM @sites site
JOIN @siteEnergy siteEnergy ON site.id = siteEnergy.sitefk
FOR XML AUTO, ROOT('SiteInformation')
Результаты:
<SiteInformation>
<site ID="1" Name="abc">
<siteEnergy SiteFK="1" Month="1" Energy="50" />
<siteEnergy SiteFK="1" Month="2" Energy="49" />
<siteEnergy SiteFK="1" Month="3" Energy="50" />
</site>
<site ID="2" Name="def">
<siteEnergy SiteFK="2" Month="1" Energy="33" />
<siteEnergy SiteFK="2" Month="2" Energy="34" />
<siteEnergy SiteFK="2" Month="3" Energy="50" />
</site>
</SiteInformation>