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-ID: 390751

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

Ausgedruckt am: 25.11.2024 um 10:11 Uhr

MadMax
Lösung MadMax 26.10.2018 um 12:16:05 Uhr
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