marcusg562
Goto Top

FOR XML RAW mit IF Abfrage

Hallo zusammen,

Customer DB
Art Name Ort
1 Müller Ehingen
2 Fa. Gruber Braunsweiler
1 Meier Gelbhausen
1 Schmidt Winnstetten
2 ALI GmbH Ottmarsweiler


wie kann ich aus meiner SQL Abfrage:
select * from CustomerDB 
FOR XML RAW ('Kunde'), ROOT ('KundenUndFirmen') ELEMENTS;  

Folgendes Ergebnis bekommen:
<KundenUndFirmen>
 <Kunde>
  <Name>Müller</Müller>
  <Ort>Ehingen</Ort>
 </Kunde>
 <Firma>
  <Name>Fa. Gruber</Müller>
  <Ort>Braunsweiler</Ort>
 </Firma>
 <Kunde>
  <Name>Meier</Müller>
  <Ort>Gelbhausen</Ort>
 </Kunde>
 <Kunde>
  <Name>Schmidt</Müller>
  <Ort>Winnstetten</Ort>
 </Kunde>
 <Firma>
  <Name>ALI GmbH</Müller>
  <Ort>Ottmarsweiler</Ort>
 </Firma>
<KundenUndFirmen>

Ich möchte also quasi sowas:
select * from CustomerDB 
FOR XML RAW ( IF Art='1' then "Kunde" else "Firma"), ROOT ('KundenUndFirmen') ELEMENTS;  

Content-Key: 390751

Url: https://administrator.de/contentid/390751

Printed on: April 16, 2024 at 08:04 o'clock

Member: MadMax
Solution MadMax Oct 26, 2018 at 10:16:05 (UTC)
Goto Top
Hallo Marcusg562,

probier es mal mit:
select	case Art when 1 then (select Name, Ort for xml raw ('Kunde'), type, elements)  
		when 2 then (select Name, Ort for xml raw ('Firma'), type, elements)  
		end
from	CustomerDB 
for xml raw ('KundenUndFirmen'), elements;  

Gruß, Mad Max