Sorgu:
declare @X xml = '
<item ID = "0"/>
<item ID = "1"/>
<item/>
<item/>';
select I.X.value('@ID', 'int')
from @X.nodes('/item') as I(X);
Sonuç:
-----------
0
1
NULL
NULL
Yürütme planı:
Üst dal XML'i dört satıra parçalar ve alt dal öznitelik değerini alır ID
.
Bana garip gelen şey, Akış Toplama işlecinden döndürülen satır sayısıdır. Filtre'den gelen 2 satır, XML'deki ID
birinci ve ikinci item
düğümlerden alınan özniteliktir . Akış Toplamı, İç Birleştirmeyi bir Dış Birleştirmeye etkili bir şekilde çevirerek her giriş satırı için bir tane olmak üzere dört satır döndürür.
Bu, Stream Aggregate'in başka durumlarda da yaptığı bir şey mi yoksa XML sorguları yaparken sadece garip bir şey mi oluyor?
Sorgu planının XML sürümünde, bu Akış Toplama'nın daha önce fark ettiğim diğer Akış Toplamalarından daha farklı davranması gerektiği konusunda herhangi bir ipucu göremiyorum.