Veritabanları görünümünden veri alan (SQL Server 2005) raporlama için genel bir sistem kullanıyorum. Bu bakış açısıyla, veriyi bir satırda bir satırda birleştirmek zorunda kaldım ve priyanka.sarkar tarafından açıklanan çözümü bu iş parçacığında kullandım: Combine multiple results in a subquery into a single comma-separated value. Şimdi XML sqlxml -I ile (& =>&
vs.) kodlanmış alır benim veriler dışındaSQLXML?
SELECT STUFF(
( SELECT ', ' + Name
FROM MyTable _in
WHERE _in.ID = _out.ID
FOR XML PATH('')), -- Output multiple rows as one xml type value,
-- without xml tags
1, 2, '') -- STUFF: Replace the comma at the beginning with empty string
FROM MyTable _out
GROUP BY ID -- Removes duplicates
(performansta ortaya bile ağır değil): Çözüm bilgiler (örneğin alt sorgu) birleştirilmesi için SQLXML kullanan Sonuçta XML verisini istemedim, bunu sadece bir numara olarak kullandım ve genel sistem yüzünden şifrelenmiş veriyi düzgün bir şekilde rapor edebilmek için bunu kodlayamam. CURSOR-birleştirme veya COALESCE-ing burada bir seçenek değil saklı yordamları kullanamazsınız. Bu nedenle, ben ... XML tekrar, veya daha da iyisi: SQLXML'in kodlamasını engeller. Açıkçası ben bunu yapar saklı bir fonksiyon yazabiliriz, ancak bir seçenek olarak type
belirtirseniz ben ... Yardımlarınız için
Teşekkür ...
Teşekkürler, ben " '.value(), TİP (. ' 'Nvarchar (max)') XML PATH (' İÇİN ... SEÇ)'" – Koen
için basitleştirilmiş +1 Çapraz başvuru ve kök seçenekleri ile kafam karışmıştı, bu yüzden bir cevap olarak @ Koen'in yorumunu ekledim. – dotjoe