私はGoogle Mapsアプリケーションの実際のデータが必要になると思うので、Northwindを使用してSQLをモデル化しています。私はクエリが正常に動作していると思いますが、XMLで返された場合、階層は必要な方法ではありません。ここで FROM句のサブクエリがFOR XML AUTO出力で不要なELEMENTを引き起こしています
SELECT Marker.CustomerID
,Marker.CompanyName
,Marker.TotalAmount
,o.OrderID
,o.Freight
FROM
(
SELECT c.CustomerID
,c.CompanyName
,c.Address
,COUNT(o.freight) as TotalOrders
,SUM(o.freight) as TotalAmount
FROM Customers c
INNER JOIN Orders o
ON c.CustomerID = o.CustomerID
where c.CustomerID = 'ALFKI' or c.CustomerID = 'ANTON'
group by c.CustomerID
,c.CompanyName
,c.Address
) AS Marker
INNER JOIN Orders o
ON Marker.CustomerID = o.CustomerID
where Marker.CustomerID = 'ALFKI' or Marker.CustomerID = 'ANTON'
order by 1
for xml auto, root('root')
は、XMLが返されます。
<root>
<c CustomerID="ALFKI" CompanyName="Alfreds Futterkiste">
<Marker TotalAmount="225.5800">
<o OrderID="10643" Freight="29.4600" />
<o OrderID="10692" Freight="61.0200" />
<o OrderID="10702" Freight="23.9400" />
<o OrderID="10835" Freight="69.5300" />
<o OrderID="10952" Freight="40.4200" />
<o OrderID="11011" Freight="1.2100" />
</Marker>
</c>
<c CustomerID="ANTON" CompanyName="Antonio Moreno Taquería">
<Marker TotalAmount="268.5200">
<o OrderID="10365" Freight="22.0000" />
<o OrderID="10507" Freight="47.4500" />
<o OrderID="10535" Freight="15.6400" />
<o OrderID="10573" Freight="84.8400" />
<o OrderID="10677" Freight="4.0300" />
<o OrderID="10682" Freight="36.1300" />
<o OrderID="10856" Freight="58.4300" />
</Marker>
</c>
</root>
顧客テーブルの別名としてCを使用してサブクエリがXMLで不要です。注文と顧客の両方にいるため、CustomerIDがあいまいなので、必要なようです。私は嘲笑アップとして下記マーカー内のみ Oを表示する方法を知りたい:
<root>
<Marker CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" TotalAmount="225.5800">
<o OrderID="10643" Freight="29.4600" />
<o OrderID="10692" Freight="61.0200" />
<o OrderID="10702" Freight="23.9400" />
<o OrderID="10835" Freight="69.5300" />
<o OrderID="10952" Freight="40.4200" />
<o OrderID="11011" Freight="1.2100" />
</Marker>
あなたのCTEのアイデアのおかげで(私はその上のアップを検討する必要があります。)が、コード上記で提供したのとまったく同じ[不要な] XML階層が生成されます。 –