dholtmann
22-03-16, 16:30
Guten Abend zusammen,
momentan versuche ich aus einer Tabelle per embedded SQL eine XML-Datei zu erzeugen.
Das funktioniert bisher auch wunderbar, jedoch möchte ich nun vermeiden, dass Werte die mit 0 bzw ' ' gefüllt sind, angezeigt werden. Gibt es da ein Schlüsselwort?
Habe es bereits mit CASE versucht, bekomme aber keine anständige Syntax zusammen.
Meine XML erzeuge ich bisher ungefähr so:
exec sql select xmldocument(
xmlelement(NAME "Data",
xmlnamespaces(
'www.example.com/1' AS "xsi"),
xmlelement(NAME "Company", digits(max(COMPANY))),
xmlelement(NAME "Store", max(STORE)),
xmlelement(NAME "Date", max(:val_dat_xml)),
xmlgroup(
trim(ID) as "Id",
COUNT as "Counted",
case when Substr(Trim(char(NUMBER)), 1, 1) = ','
then '0.00' else Trim(Replace(char(NUMBER), ',', '.')) end
as "Number",
order by ID asc
option row "TEST" root "TestList")))
into :myxml
from Data where ID <> ' '
Konkret möchte ich also nun "Counted" nur ausgeben, wenn COUNT > 0 ist.
momentan versuche ich aus einer Tabelle per embedded SQL eine XML-Datei zu erzeugen.
Das funktioniert bisher auch wunderbar, jedoch möchte ich nun vermeiden, dass Werte die mit 0 bzw ' ' gefüllt sind, angezeigt werden. Gibt es da ein Schlüsselwort?
Habe es bereits mit CASE versucht, bekomme aber keine anständige Syntax zusammen.
Meine XML erzeuge ich bisher ungefähr so:
exec sql select xmldocument(
xmlelement(NAME "Data",
xmlnamespaces(
'www.example.com/1' AS "xsi"),
xmlelement(NAME "Company", digits(max(COMPANY))),
xmlelement(NAME "Store", max(STORE)),
xmlelement(NAME "Date", max(:val_dat_xml)),
xmlgroup(
trim(ID) as "Id",
COUNT as "Counted",
case when Substr(Trim(char(NUMBER)), 1, 1) = ','
then '0.00' else Trim(Replace(char(NUMBER), ',', '.')) end
as "Number",
order by ID asc
option row "TEST" root "TestList")))
into :myxml
from Data where ID <> ' '
Konkret möchte ich also nun "Counted" nur ausgeben, wenn COUNT > 0 ist.