Oracle SQL Bedingung auf gesamte Abfrage

Sarah_Maria

Grünschnabel
Hallo zusammen,

ich bin neu hier und brauche mal euer Wissen :)

In einer Case-Abfrage bekomme ich als Ergebnis einen Wert/Spalte.
Gibt es eine Möglichkeit, so eine Bedingung auf eine ganze Abfrage zu beziehen?

Ich habe das PRoblem, dass mein Ergebnis eine Pivot mit 5 Spalten ist:

SQL:
-- Wenn LANG_ID = 1, dann
  select * from
                       (select
                        part_no,
                       PROP_GROUP,
                       PROP_GROUP_DESC,
                        VALUE_S
                   
                        from
                        specdata SD,
                        specification_header SH
                       
                        where 1=1
                        and SD.LANG_ID IN ('1')
                        and SD.HEADER_ID IN (700093, 700213)
                        and SD.PART_NO = '44697'
                         )PIVOT (MAX (VALUE_S) FELD FOR HEADER_ID IN (700213 JA, 700093 Bemerkung))

-- SONST
  select * from
                       (select
                        part_no,
                       PROP_GROUP,
                       PROP_GROUP_DESC,
                        SD.VALUE_S
                   
                        from
                        specdata SD,
                        specification_header SH
                       
                        where 1=1
                        and SD.LANG_ID IN ('3')
                        and SD.HEADER_ID IN (700093, 700213)
                        and SD.PART_NO = '44697'
                         )PIVOT (MAX (VALUE_S) FELD FOR HEADER_ID IN (700213 YES, 700093 comment))

Vielen Dank schonmal für eure Hilfe :)
 
Zuletzt bearbeitet von einem Moderator:

Yaslaw

n/a
Moderator
Du kannst dir einen COde zusammensetzen

SQL:
-- SONST
WITH prepared_data AS (
  select
    part_no,
    PROP_GROUP,
    PROP_GROUP_DESC,
    SD.VALUE_S,
    SD.LANG_ID || '.' || HEADER_ID as pivot_code
  from
    specdata SD,
    specification_header SH
    where 
    and SD.HEADER_ID IN (700093, 700213)
    and SD.PART_NO = '44697'
)
select *
from prepared_data     
pivot (max (VALUE_S) FELD FOR pivot_code IN ('1.700213' JA, '3.700213' YES, '1.700093' Bemerkung, '3.700093' comment);
 

Sarah_Maria

Grünschnabel
Hey,

die Idee ist super, Danke :)

allerdings bekomme ich keine Werte (VALUE_S) in der Pivot. Es wird mir (egal ob LANG_ID 1 oder 3) immer NULL Werte zurückgegeben...
 

Neue Beiträge