2016-12-09 7 views
0

У меня есть следующий код XML, и я пытаюсь создать xml, показанный после кода, - попробовал несколько подходов, но не имел успеха.Несколько корневых XML-SQL Server

Имеются 2 таблицы: [meiForecasting].[dbo].george_mdx содержит следующие данные, а следующие данные. Я пытаюсь присоединиться к таблицам, поэтому я могу получить xml, чтобы для каждого UnitPrice в george_mdx, который находится между каждой группой priceband (pricedfrom -), я смогу сгенерировать следующий формат XML.

Посмотрите мой код ниже.

Внутренний xml работает отлично, но внешние элементы (priceband и pricebands) являются проблемой.

(Select 

(select 

pb.pricebandID '@Id', 
pb.[pricedfrom] '@start', 
pb.[PricedTo] '@end', 

(
SELECT cast(yearnumber as int) AS '@number' 
,(convert(varchar(12), cast(yearstart as date), 126)) AS '@yearstart' 
    ,(convert(varchar(12), cast(yearend as date), 126)) AS '@yearend' 
    ,(
    SELECT cast(X.WeekNumber as int) AS '@number' 
      ,cast(x.Quantity as int) AS '@units'  
    FROM [meiForecasting].[dbo].george_mdx AS X 
    WHERE cast(X.YearNumber as int)=cast(tbl.YearNumber as int) 
    FOR XML PATH('week'),TYPE 
    ) 
FROM [meiForecasting].[dbo].george_mdx AS tbl inner join   meiforecasting.PLANNING.PriceBand as pb 
ON (tbl.unitprice <= pb.PricedTo AND tbl.unitprice >= pb.PricedFrom) 
GROUP BY YearNumber,YearStart,YearEnd, pb.GroupID 
FOR XML PATH('year'),ROOT('years') 
    ) 
) 

FOR XML PATH ('Priceband'),ROOT ('PriceBands') 
) 
) 

стол [meiForecasting]. [DBO] .george_mdx

+------------+------------+----------+-----------+ 
| yearnumber | weeknumber | quantity | unitprice | 
+------------+------------+----------+-----------+ 
|   1 |   44 |  3807 | 45662.55 | 
|   1 |   45 |  4048 | 45295.00 | 
|   1 |   46 |  3862 | 45047.68 | 
|   1 |   47 |  3677 | 41013.00 | 
|   1 |   48 |  3695 | 39387.43 | 
|   1 |   49 |  3871 | 43199.02 | 
|   1 |   50 |  3686 | 39131.82 | 
|   2 |   1 |  4287 | 51086.02 | 
|   2 |   2 |  4751 | 60404.40 | 
|   2 |   3 |  5536 | 67468.90 | 
|   2 |   4 |  3712 | 45776.32 | 
|   2 |   5 |  3367 | 44288.19 | 
|   2 |   6 |  3598 | 45307.49 | 
|   2 |   7 |  3461 | 47757.59 | 
|   2 |   8 |  3334 | 43771.33 | 
|   2 |   9 |  3325 | 41656.88 | 
|   2 |   10 |  3313 | 44738.39 | 
|   2 |   32 |  3303 | 40144.35 | 
|   2 |   33 |  3229 | 45892.27 | 
|   2 |   34 |  3313 | 44570.07 | 
|   2 |   35 |  3338 | 44978.12 | 
|   2 |   36 |  3432 | 46760.30 | 
|   2 |   37 |  3340 | 48341.05 | 
|   2 |   38 |  3597 | 48673.97 | 
|   2 |   39 |  3628 | 48636.17 | 
|   3 |   29 |  3179 | 43610.97 | 
+------------+------------+----------+-----------+ 


+--------------------+---------+----------+ 
| Planning.  |priceband|   | 
+--------------------+---------+----------+ 
|     | 
| 43     | 0.00 | 1000.00 | 
| 45     | 0.00 | 1000.00 | 
| 49     | 0.00 | 999.99 | 
| 50     | 1000.00 | 1999.99 | 
| 51     | 2000.00 | 9999.00 | 
| 52     | 0.00 | 15.00 | 
| 53     | 15.01 | 300.00 | 
| 62     | 0.00 | 15.00 | 
| 63     | 15.01 | 200.00 | 
| 69     | 100.00 | 500.99 | 
| 70     | 501.00 | 1000.00 | 
| 78     | 0.00 | 299.99 | 
| 79     | 300.00 | 399.99 | 
| 80     | 400.00 | 499.99 | 
| 81     | 500.00 | 599.99 | 
| 82     | 600.00 | 699.99 | 
| 83     | 700.00 | 999.99 | 
| 84     | 1000.00 | 10000.00 | 
| 125    | 50.00 | 99.99 | 
| 126    | 100.00 | 199.99 | 
| 127    | 200.00 | 299.99 | 
| 128    | 300.00 | 399.99 | 
| 129    | 400.00 | 9999.00 | 
+--------------------+---------+----------+ 

ожидается XML (образец только-цифры не могут быть правильными)

<priceBands> <priceBand id="1" end="99.99" start="0.00"> 
<years> <year number="1"> 
<week number="1" units="41"/> 
<week number="2" units="41"/> 
<week number="3" units="41"/> 
<week number="4" units="41"/> 
<week number="5" units="41"/> 
<week number="6" units="41"/> 
<week number="7" units="41"/> 
<week number="8" units="41"/> 
<week number="9" units="41"/> 
<week number="10" units="41"/> 
<week number="11" units="41"/> 
<week number="12" units="41"/> 
<week number="13" units="41"/> 
<week number="14" units="41"/> 
<week number="15" units="41"/> 
<week number="16" units="41"/> 
<week number="17" units="41"/> 
<week number="18" units="41"/> 
<week number="19" units="41"/> 
<week number="20" units="41"/> 
<week number="21" units="41"/> 
<week number="22" units="41"/> 
<week number="23" units="41"/> 
<week number="24" units="41"/> 
<week number="25" units="41"/> 
<week number="26" units="41"/> 
<week number="27" units="41"/> 
<week number="28" units="41"/> 
<week number="29" units="41"/> 
<week number="30" units="41"/> 
<week number="31" units="41"/> 
<week number="32" units="41"/> 
<week number="33" units="41"/> 
<week number="34" units="41"/> 
<week number="35" units="41"/> 
<week number="36" units="41"/> 
<week number="37" units="41"/> 
<week number="38" units="41"/> 
<week number="39" units="41"/> 
<week number="40" units="41"/> 
<week number="41" units="41"/> 
<week number="42" units="41"/> 
<week number="43" units="41"/> 
<week number="44" units="41"/> 
<week number="45" units="41"/> 
<week number="46" units="41"/> 
<week number="47" units="41"/> 
<week number="48" units="41"/> 
<week number="49" units="41"/> 
<week number="50" units="41"/> 
<week number="41" units="41"/> 
<week number="52" units="41"/> 

</year> -<year number="2"> 
<week number="1" units="41"/> 
<week number="2" units="41"/> 
<week number="3" units="41"/> 
<week number="4" units="41"/> 
<week number="5" units="41"/> 
<week number="6" units="41"/> 
<week number="7" units="41"/> 
<week number="8" units="41"/> 
<week number="9" units="41"/> 
<week number="10" units="41"/> 
<week number="11" units="41"/> 
<week number="12" units="41"/> 
<week number="13" units="41"/> 
<week number="14" units="41"/> 
<week number="15" units="41"/> 
<week number="16" units="41"/> 
<week number="17" units="41"/> 
<week number="18" units="41"/> 
<week number="19" units="41"/> 
<week number="20" units="41"/> 
<week number="21" units="41"/> 
<week number="22" units="41"/> 
<week number="23" units="41"/> 
<week number="24" units="41"/> 
<week number="25" units="41"/> 
<week number="26" units="41"/> 
<week number="27" units="41"/> 
<week number="28" units="41"/> 
<week number="29" units="41"/> 
<week number="30" units="41"/> 
<week number="31" units="41"/> 
<week number="32" units="41"/> 
<week number="33" units="41"/> 
<week number="34" units="41"/> 
<week number="35" units="41"/> 
<week number="36" units="41"/> 
<week number="37" units="41"/> 
<week number="38" units="41"/> 
<week number="39" units="41"/> 
<week number="40" units="41"/> 
<week number="41" units="41"/> 
<week number="42" units="41"/> 
<week number="43" units="41"/> 
<week number="44" units="41"/> 
<week number="45" units="41"/> 
<week number="46" units="41"/> 
<week number="47" units="41"/> 
<week number="48" units="41"/> 
<week number="49" units="41"/> 
<week number="50" units="41"/> 
<week number="41" units="41"/> 
<week number="52" units="41"/> 

</year> <year number="3"> 
<week number="1" units="41"/> 
<week number="2" units="41"/> 
<week number="3" units="41"/> 
<week number="4" units="41"/> 
<week number="5" units="41"/> 
<week number="6" units="41"/> 
<week number="7" units="41"/> 
<week number="8" units="41"/> 
<week number="9" units="41"/> 
<week number="10" units="41"/> 
<week number="11" units="41"/> 
<week number="12" units="41"/> 
<week number="13" units="41"/> 
<week number="14" units="41"/> 
<week number="15" units="41"/> 
<week number="16" units="41"/> 
<week number="17" units="41"/> 
<week number="18" units="41"/> 
<week number="19" units="41"/> 
<week number="20" units="41"/> 
<week number="21" units="41"/> 
<week number="22" units="41"/> 
<week number="23" units="41"/> 
<week number="24" units="41"/> 
<week number="25" units="41"/> 
<week number="26" units="41"/> 
<week number="27" units="41"/> 
<week number="28" units="41"/> 
<week number="29" units="41"/> 
<week number="30" units="41"/> 
<week number="31" units="41"/> 
<week number="32" units="41"/> 
<week number="33" units="41"/> 
<week number="34" units="41"/> 
<week number="35" units="41"/> 
<week number="36" units="41"/> 
<week number="37" units="41"/> 
<week number="38" units="41"/> 
<week number="39" units="41"/> 
<week number="40" units="41"/> 
<week number="41" units="41"/> 
<week number="42" units="41"/> 
<week number="43" units="41"/> 
<week number="44" units="41"/> 
<week number="45" units="41"/> 
<week number="46" units="41"/> 
<week number="47" units="41"/> 
<week number="48" units="41"/> 
<week number="49" units="41"/> 
<week number="50" units="41"/> 
<week number="41" units="41"/> 
<week number="52" units="41"/> 

</year> -<year number="4"> 
<week number="1" units="41"/> 
<week number="2" units="41"/> 
<week number="3" units="41"/> 
<week number="4" units="41"/> 
<week number="5" units="41"/> 
<week number="6" units="41"/> 
<week number="7" units="41"/> 
<week number="8" units="41"/> 
<week number="9" units="41"/> 
<week number="10" units="41"/> 
<week number="11" units="41"/> 
<week number="12" units="41"/> 
<week number="13" units="41"/> 
<week number="14" units="41"/> 
<week number="15" units="41"/> 
<week number="16" units="41"/> 
<week number="17" units="41"/> 
<week number="18" units="41"/> 
<week number="19" units="41"/> 
<week number="20" units="41"/> 
<week number="21" units="41"/> 
<week number="22" units="41"/> 
<week number="23" units="41"/> 
<week number="24" units="41"/> 
<week number="25" units="41"/> 
<week number="26" units="41"/> 
<week number="27" units="41"/> 
<week number="28" units="41"/> 
<week number="29" units="41"/> 
<week number="30" units="41"/> 
<week number="31" units="41"/> 
<week number="32" units="41"/> 
<week number="33" units="41"/> 
<week number="34" units="41"/> 
<week number="35" units="41"/> 
<week number="36" units="41"/> 
<week number="37" units="41"/> 
<week number="38" units="41"/> 
<week number="39" units="41"/> 
<week number="40" units="41"/> 
<week number="41" units="41"/> 
<week number="42" units="41"/> 
<week number="43" units="41"/> 
<week number="44" units="41"/> 
<week number="45" units="41"/> 
<week number="46" units="41"/> 
<week number="47" units="41"/> 
<week number="48" units="41"/> 
<week number="49" units="41"/> 
<week number="50" units="41"/> 
<week number="41" units="41"/> 
<week number="52" units="41"/> 

</year> <year number="5"> 
<week number="1" units="41"/> 
<week number="2" units="41"/> 
<week number="3" units="41"/> 
<week number="4" units="41"/> 
<week number="5" units="41"/> 
<week number="6" units="41"/> 
<week number="7" units="41"/> 
<week number="8" units="41"/> 
<week number="9" units="41"/> 
<week number="10" units="41"/> 
<week number="11" units="41"/> 
<week number="12" units="41"/> 
<week number="13" units="41"/> 
<week number="14" units="41"/> 
<week number="15" units="41"/> 
<week number="16" units="41"/> 
<week number="17" units="41"/> 
<week number="18" units="41"/> 
<week number="19" units="41"/> 
<week number="20" units="41"/> 
<week number="21" units="41"/> 
<week number="22" units="41"/> 
<week number="23" units="41"/> 
<week number="24" units="41"/> 
<week number="25" units="41"/> 
<week number="26" units="41"/> 
<week number="27" units="41"/> 
<week number="28" units="41"/> 
<week number="29" units="41"/> 
<week number="30" units="41"/> 
<week number="31" units="41"/> 
<week number="32" units="41"/> 
<week number="33" units="41"/> 
<week number="34" units="41"/> 
<week number="35" units="41"/> 
<week number="36" units="41"/> 
<week number="37" units="41"/> 
<week number="38" units="41"/> 
<week number="39" units="41"/> 
<week number="40" units="41"/> 
<week number="41" units="41"/> 
<week number="42" units="41"/> 
<week number="43" units="41"/> 
<week number="44" units="41"/> 
<week number="45" units="41"/> 
<week number="46" units="41"/> 
<week number="47" units="41"/> 
<week number="48" units="41"/> 
<week number="49" units="41"/> 
<week number="50" units="41"/> 
<week number="41" units="41"/> 
<week number="52" units="41"/> 
</year> </years> </priceBand> 

<priceBand id="2" end="499.99" start="100.00"> 

<years> <year number="1"> 
<week number="1" units="41"/> 
<week number="2" units="41"/> 
<week number="3" units="41"/> 
<week number="4" units="41"/> 
<week number="5" units="41"/> 
<week number="6" units="41"/> 
<week number="7" units="41"/> 
<week number="8" units="41"/> 
<week number="9" units="41"/> 
<week number="10" units="41"/> 
<week number="11" units="41"/> 
<week number="12" units="41"/> 
<week number="13" units="41"/> 
<week number="14" units="41"/> 
<week number="15" units="41"/> 
<week number="16" units="41"/> 
<week number="17" units="41"/> 
<week number="18" units="41"/> 
<week number="19" units="41"/> 
<week number="20" units="41"/> 
<week number="21" units="41"/> 
<week number="22" units="41"/> 
<week number="23" units="41"/> 
<week number="24" units="41"/> 
<week number="25" units="41"/> 
<week number="26" units="41"/> 
<week number="27" units="41"/> 
<week number="28" units="41"/> 
<week number="29" units="41"/> 
<week number="30" units="41"/> 
<week number="31" units="41"/> 
<week number="32" units="41"/> 
<week number="33" units="41"/> 
<week number="34" units="41"/> 
<week number="35" units="41"/> 
<week number="36" units="41"/> 
<week number="37" units="41"/> 
<week number="38" units="41"/> 
<week number="39" units="41"/> 
<week number="40" units="41"/> 
<week number="41" units="41"/> 
<week number="42" units="41"/> 
<week number="43" units="41"/> 
<week number="44" units="41"/> 
<week number="45" units="41"/> 
<week number="46" units="41"/> 
<week number="47" units="41"/> 
<week number="48" units="41"/> 
<week number="49" units="41"/> 
<week number="50" units="41"/> 
<week number="41" units="41"/> 
<week number="52" units="41"/> 

</year> <year number="2"> 
<week number="1" units="41"/> 
<week number="2" units="41"/> 
<week number="3" units="41"/> 
<week number="4" units="41"/> 
<week number="5" units="41"/> 
<week number="6" units="41"/> 
<week number="7" units="41"/> 
<week number="8" units="41"/> 
<week number="9" units="41"/> 
<week number="10" units="41"/> 
<week number="11" units="41"/> 
<week number="12" units="41"/> 
<week number="13" units="41"/> 
<week number="14" units="41"/> 
<week number="15" units="41"/> 
<week number="16" units="41"/> 
<week number="17" units="41"/> 
<week number="18" units="41"/> 
<week number="19" units="41"/> 
<week number="20" units="41"/> 
<week number="21" units="41"/> 
<week number="22" units="41"/> 
<week number="23" units="41"/> 
<week number="24" units="41"/> 
<week number="25" units="41"/> 
<week number="26" units="41"/> 
<week number="27" units="41"/> 
<week number="28" units="41"/> 
<week number="29" units="41"/> 
<week number="30" units="41"/> 
<week number="31" units="41"/> 
<week number="32" units="41"/> 
<week number="33" units="41"/> 
<week number="34" units="41"/> 
<week number="35" units="41"/> 
<week number="36" units="41"/> 
<week number="37" units="41"/> 
<week number="38" units="41"/> 
<week number="39" units="41"/> 
<week number="40" units="41"/> 
<week number="41" units="41"/> 
<week number="42" units="41"/> 
<week number="43" units="41"/> 
<week number="44" units="41"/> 
<week number="45" units="41"/> 
<week number="46" units="41"/> 
<week number="47" units="41"/> 
<week number="48" units="41"/> 
<week number="49" units="41"/> 
<week number="50" units="41"/> 
<week number="41" units="41"/> 
<week number="52" units="41"/> 

</year> <year number="3"> 
<week number="1" units="41"/> 
<week number="2" units="41"/> 
<week number="3" units="41"/> 
<week number="4" units="41"/> 
<week number="5" units="41"/> 
<week number="6" units="41"/> 
<week number="7" units="41"/> 
<week number="8" units="41"/> 
<week number="9" units="41"/> 
<week number="10" units="41"/> 
<week number="11" units="41"/> 
<week number="12" units="41"/> 
<week number="13" units="41"/> 
<week number="14" units="41"/> 
<week number="15" units="41"/> 
<week number="16" units="41"/> 
<week number="17" units="41"/> 
<week number="18" units="41"/> 
<week number="19" units="41"/> 
<week number="20" units="41"/> 
<week number="21" units="41"/> 
<week number="22" units="41"/> 
<week number="23" units="41"/> 
<week number="24" units="41"/> 
<week number="25" units="41"/> 
<week number="26" units="41"/> 
<week number="27" units="41"/> 
<week number="28" units="41"/> 
<week number="29" units="41"/> 
<week number="30" units="41"/> 
<week number="31" units="41"/> 
<week number="32" units="41"/> 
<week number="33" units="41"/> 
<week number="34" units="41"/> 
<week number="35" units="41"/> 
<week number="36" units="41"/> 
<week number="37" units="41"/> 
<week number="38" units="41"/> 
<week number="39" units="41"/> 
<week number="40" units="41"/> 
<week number="41" units="41"/> 
<week number="42" units="41"/> 
<week number="43" units="41"/> 
<week number="44" units="41"/> 
<week number="45" units="41"/> 
<week number="46" units="41"/> 
<week number="47" units="41"/> 
<week number="48" units="41"/> 
<week number="49" units="41"/> 
<week number="50" units="41"/> 
<week number="41" units="41"/> 
<week number="52" units="41"/> 

</year> <year number="4"> 
<week number="1" units="41"/> 
<week number="2" units="41"/> 
<week number="3" units="41"/> 
<week number="4" units="41"/> 
<week number="5" units="41"/> 
<week number="6" units="41"/> 
<week number="7" units="41"/> 
<week number="8" units="41"/> 
<week number="9" units="41"/> 
<week number="10" units="41"/> 
<week number="11" units="41"/> 
<week number="12" units="41"/> 
<week number="13" units="41"/> 
<week number="14" units="41"/> 
<week number="15" units="41"/> 
<week number="16" units="41"/> 
<week number="17" units="41"/> 
<week number="18" units="41"/> 
<week number="19" units="41"/> 
<week number="20" units="41"/> 
<week number="21" units="41"/> 
<week number="22" units="41"/> 
<week number="23" units="41"/> 
<week number="24" units="41"/> 
<week number="25" units="41"/> 
<week number="26" units="41"/> 
<week number="27" units="41"/> 
<week number="28" units="41"/> 
<week number="29" units="41"/> 
<week number="30" units="41"/> 
<week number="31" units="41"/> 
<week number="32" units="41"/> 
<week number="33" units="41"/> 
<week number="34" units="41"/> 
<week number="35" units="41"/> 
<week number="36" units="41"/> 
<week number="37" units="41"/> 
<week number="38" units="41"/> 
<week number="39" units="41"/> 
<week number="40" units="41"/> 
<week number="41" units="41"/> 
<week number="42" units="41"/> 
<week number="43" units="41"/> 
<week number="44" units="41"/> 
<week number="45" units="41"/> 
<week number="46" units="41"/> 
<week number="47" units="41"/> 
<week number="48" units="41"/> 
<week number="49" units="41"/> 
<week number="50" units="41"/> 
<week number="41" units="41"/> 
<week number="52" units="41"/> 

</year> -<year number="5"> 
<week number="1" units="41"/> 
<week number="2" units="41"/> 
<week number="3" units="41"/> 
. 
. 
. 
<week number="52" units="41"/> 

</year> </years> </priceBand> 

<priceBand id="3" end="999.99" start="500.00"> <years> <year number="1"> 
<week number="1" units="41"/> 
<week number="2" units="41"/> 
<week number="3" units="41"/> 
<week number="4" units="41"/> 
<week number="5" units="41"/> 
<week number="6" units="41"/> 
<week number="7" units="41"/> 
<week number="8" units="41"/> 
<week number="9" units="41"/> 
<week number="10" units="41"/> 
<week number="11" units="41"/> 
<week number="12" units="41"/> 
<week number="13" units="41"/> 
<week number="14" units="41"/> 
<week number="15" units="41"/> 
<week number="16" units="41"/> 
<week number="17" units="41"/> 
<week number="18" units="41"/> 
<week number="19" units="41"/> 
<week number="20" units="41"/> 
<week number="21" units="41"/> 
<week number="22" units="41"/> 
<week number="23" units="41"/> 
<week number="24" units="41"/> 
<week number="25" units="41"/> 
<week number="26" units="41"/> 
<week number="27" units="41"/> 
<week number="28" units="41"/> 
<week number="29" units="41"/> 
<week number="30" units="41"/> 
<week number="31" units="41"/> 
<week number="32" units="41"/> 
<week number="33" units="41"/> 
<week number="34" units="41"/> 
<week number="35" units="41"/> 
<week number="36" units="41"/> 
<week number="37" units="41"/> 
<week number="38" units="41"/> 
<week number="39" units="41"/> 
<week number="40" units="41"/> 
<week number="41" units="41"/> 
<week number="42" units="41"/> 
<week number="43" units="41"/> 
<week number="44" units="41"/> 
<week number="45" units="41"/> 
<week number="46" units="41"/> 
<week number="47" units="41"/> 
<week number="48" units="41"/> 
<week number="49" units="41"/> 
<week number="50" units="41"/> 
<week number="41" units="41"/> 
<week number="52" units="41"/> 

</year> <year number="2"> 
<week number="1" units="41"/> 
<week number="2" units="41"/> 
<week number="3" units="41"/> 
<week number="4" units="41"/> 
<week number="5" units="41"/> 
<week number="6" units="41"/> 
<week number="7" units="41"/> 
<week number="8" units="41"/> 
<week number="9" units="41"/> 
<week number="10" units="41"/> 
<week number="11" units="41"/> 
<week number="12" units="41"/> 
<week number="13" units="41"/> 
<week number="14" units="41"/> 
<week number="15" units="41"/> 
<week number="16" units="41"/> 
<week number="17" units="41"/> 
<week number="18" units="41"/> 
<week number="19" units="41"/> 
<week number="20" units="41"/> 
<week number="21" units="41"/> 
<week number="22" units="41"/> 
<week number="23" units="41"/> 
<week number="24" units="41"/> 
<week number="25" units="41"/> 
<week number="26" units="41"/> 
<week number="27" units="41"/> 
<week number="28" units="41"/> 
<week number="29" units="41"/> 
<week number="30" units="41"/> 
<week number="31" units="41"/> 
<week number="32" units="41"/> 
<week number="33" units="41"/> 
<week number="34" units="41"/> 
<week number="35" units="41"/> 
<week number="36" units="41"/> 
<week number="37" units="41"/> 
<week number="38" units="41"/> 
<week number="39" units="41"/> 
<week number="40" units="41"/> 
<week number="41" units="41"/> 
<week number="42" units="41"/> 
<week number="43" units="41"/> 
<week number="44" units="41"/> 
<week number="45" units="41"/> 
<week number="46" units="41"/> 
<week number="47" units="41"/> 
<week number="48" units="41"/> 
<week number="49" units="41"/> 
<week number="50" units="41"/> 
<week number="41" units="41"/> 
<week number="52" units="41"/> 

</year> <year number="3"> 
<week number="1" units="41"/> 
<week number="2" units="41"/> 
<week number="3" units="41"/> 
<week number="4" units="41"/> 
<week number="5" units="41"/> 
<week number="6" units="41"/> 
<week number="7" units="41"/> 
<week number="8" units="41"/> 
<week number="9" units="41"/> 
<week number="10" units="41"/> 
<week number="11" units="41"/> 
<week number="12" units="41"/> 
<week number="13" units="41"/> 
<week number="14" units="41"/> 
<week number="15" units="41"/> 
<week number="16" units="41"/> 
<week number="17" units="41"/> 
<week number="18" units="41"/> 
<week number="19" units="41"/> 
<week number="20" units="41"/> 
<week number="21" units="41"/> 
<week number="22" units="41"/> 
<week number="23" units="41"/> 
<week number="24" units="41"/> 
<week number="25" units="41"/> 
<week number="26" units="41"/> 
<week number="27" units="41"/> 
<week number="28" units="41"/> 
<week number="29" units="41"/> 
<week number="30" units="41"/> 
<week number="31" units="41"/> 
<week number="32" units="41"/> 
<week number="33" units="41"/> 
<week number="34" units="41"/> 
<week number="35" units="41"/> 
<week number="36" units="41"/> 
<week number="37" units="41"/> 
<week number="38" units="41"/> 
<week number="39" units="41"/> 
<week number="40" units="41"/> 
<week number="41" units="41"/> 
<week number="42" units="41"/> 
<week number="43" units="41"/> 
<week number="44" units="41"/> 
<week number="45" units="41"/> 
<week number="46" units="41"/> 
<week number="47" units="41"/> 
<week number="48" units="41"/> 
<week number="49" units="41"/> 
<week number="50" units="41"/> 
<week number="41" units="41"/> 
<week number="52" units="41"/> 

</year> -<year number="4"> 
<week number="1" units="41"/> 
<week number="2" units="41"/> 
<week number="3" units="41"/> 
<week number="4" units="41"/> 
<week number="5" units="41"/> 
<week number="6" units="41"/> 
<week number="7" units="41"/> 
<week number="8" units="41"/> 
<week number="9" units="41"/> 
<week number="10" units="41"/> 
<week number="11" units="41"/> 
<week number="12" units="41"/> 
<week number="13" units="41"/> 
<week number="14" units="41"/> 
<week number="15" units="41"/> 
<week number="16" units="41"/> 
<week number="17" units="41"/> 
<week number="18" units="41"/> 
<week number="19" units="41"/> 
<week number="20" units="41"/> 
<week number="21" units="41"/> 
<week number="22" units="41"/> 
<week number="23" units="41"/> 
<week number="24" units="41"/> 
<week number="25" units="41"/> 
<week number="26" units="41"/> 
<week number="27" units="41"/> 
<week number="28" units="41"/> 
<week number="29" units="41"/> 
<week number="30" units="41"/> 
<week number="31" units="41"/> 
<week number="32" units="41"/> 
<week number="33" units="41"/> 
<week number="34" units="41"/> 
<week number="35" units="41"/> 
<week number="36" units="41"/> 
<week number="37" units="41"/> 
<week number="38" units="41"/> 
<week number="39" units="41"/> 
<week number="40" units="41"/> 
<week number="41" units="41"/> 
<week number="42" units="41"/> 
<week number="43" units="41"/> 
<week number="44" units="41"/> 
<week number="45" units="41"/> 
<week number="46" units="41"/> 
<week number="47" units="41"/> 
<week number="48" units="41"/> 
<week number="49" units="41"/> 
<week number="50" units="41"/> 
<week number="41" units="41"/> 
<week number="52" units="41"/> 

</year> <year number="5"> 
<week number="1" units="41"/> 
<week number="2" units="41"/> 
<week number="3" units="41"/> 
<week number="4" units="41"/> 
<week number="5" units="41"/> 
<week number="6" units="41"/> 
<week number="7" units="41"/> 
<week number="8" units="41"/> 
<week number="9" units="41"/> 
<week number="10" units="41"/> 
<week number="11" units="41"/> 
<week number="12" units="41"/> 
<week number="13" units="41"/> 
<week number="14" units="41"/> 
<week number="15" units="41"/> 
<week number="16" units="41"/> 
<week number="17" units="41"/> 
<week number="18" units="41"/> 
<week number="19" units="41"/> 
<week number="20" units="41"/> 
<week number="21" units="41"/> 
<week number="22" units="41"/> 
<week number="23" units="41"/> 
<week number="24" units="41"/> 
<week number="25" units="41"/> 
<week number="26" units="41"/> 
<week number="27" units="41"/> 
<week number="28" units="41"/> 
<week number="29" units="41"/> 
<week number="30" units="41"/> 
<week number="31" units="41"/> 
<week number="32" units="41"/> 
<week number="33" units="41"/> 
<week number="34" units="41"/> 
<week number="35" units="41"/> 
<week number="36" units="41"/> 
<week number="37" units="41"/> 
<week number="38" units="41"/> 
<week number="39" units="41"/> 
<week number="40" units="41"/> 
<week number="41" units="41"/> 
<week number="42" units="41"/> 
<week number="43" units="41"/> 
<week number="44" units="41"/> 
<week number="45" units="41"/> 
<week number="46" units="41"/> 
<week number="47" units="41"/> 
<week number="48" units="41"/> 
<week number="49" units="41"/> 
<week number="50" units="41"/> 
<week number="41" units="41"/> 
<week number="52" units="41"/> 
</year> </years> 
</priceBand> </priceBands> 
+0

Как я уже говорил вам [ваш родственный вопрос] (http://stackoverflow.com/q/40923206/5089204). Было бы очень приятно включить ** уменьшенные данные выборки **. Всего несколько строк для каждой группы, чтобы понять логику. С другой стороны, очень важно добавить ваш ** ожидаемый результат с соответствующими цифрами **. Просто попробуйте подумать с головой иностранца. Я понятия не имею, что вы делаете ... Лучше всего [MCVE (подробнее здесь)] (http://stackoverflow.com/help/mcve) – Shnugo

+0

Далее: ваш запрос не подходит к приведенным таблицам. В ваших образцовых таблицах нет 'yearstart' или' yearend' ... Предоставление ** MCVE ** поможет вам KISS (* держите его маленьким и простым *), и это поможет избежать таких досадных ошибок ... – Shnugo

+0

Еще один намек: посмотрите на свой предыдущий вопрос. Я сделал вашу работу там для вас ... Посмотрите, как переменные таблицы объявлены и заполнены? Это именно то, что вы должны здесь делать (с ** сокращенными ** данными) – Shnugo

ответ

0

Моя волшебная стеклянная колба говорит мне, что вы можете искать что-то вроде этого:

Но (см. мои комментарии под вашим вопросом), есть много не clea r ...

SELECT pricebandID AS [@id] 
     ,pricedTo AS [@end] 
     ,pricedFrom AS [@start] 
     ,(
     SELECT cast(yearnumber as int) AS '@number' 
     ,(convert(varchar(12), cast(yearstart as date), 126)) AS '@yearstart' 
      ,(convert(varchar(12), cast(yearend as date), 126)) AS '@yearend' 
      ,(
      SELECT cast(X.WeekNumber as int) AS '@number' 
        ,cast(x.Quantity as int) AS '@units'  
      FROM @george_mdx AS X 
      WHERE cast(X.YearNumber as int)=cast(tbl.YearNumber as int) 
       AND X.unitprice BETWEEN pl.pricedFrom AND pl.pricedTo 
      FOR XML PATH('week'),TYPE 
      ) 
     FROM @george_mdx AS tbl 
     WHERE tbl.unitprice BETWEEN pl.pricedFrom AND pl.pricedTo 
     GROUP BY YearNumber,YearStart,YearEnd 
     FOR XML PATH('year'),ROOT('years') 
     ) 

FROM @Planning AS pl 
FOR XML PATH('priceBand'),ROOT('priceBands') 
+0

Спасибо Shnugo, который работал с несколькими модификациями –

Смежные вопросы