[Oracle] Zeilen in Spalten umwandeln

maljian

Grünschnabel
Ahoi zusammen

Ich habe eine Hilfstabelle und möchte die Werte die hier als Zeilen ausgegeben sind, in Spalten umwandeln.
Dazu kommt, dass ich für die Ausgabe auch nur eine Zeile haben möchte.
upload_2017-6-19_18-33-23.png

Hier mein Code
SQL:
SELECT ffu.CRE_DAT
      ,hexp_fiblnr
      ,fpro.FPRO_Projektname
      ,ffu.FFU_Datum
      ,ffu.FFU_Analysenr
      ,ffu.FFU_BEMERKUNG
      ,DECODE(ffud.ffud_ffudparameter_id,4340,ffud.ffud_wert,NULL)
            AS TS
      ,DECODE(ffud.ffud_ffudparameter_id,4341,ffud.ffud_wert,NULL)
            AS Protein
      ,DECODE(ffud.ffud_ffudparameter_id,4342,ffud.ffud_wert,NULL)
            AS Fibre1
      ,DECODE(ffud.ffud_ffudparameter_id,4343,ffud.ffud_wert,NULL)
            AS NDF1
      ,DECODE(ffud.ffud_ffudparameter_id,4344,ffud.ffud_wert,NULL)
            AS ADF
      ,DECODE(ffud.ffud_ffudparameter_id,4345,ffud.ffud_wert,NULL)
            AS Ash
      ,DECODE(ffud.ffud_ffudparameter_id,4346,ffud.ffud_wert,NULL)
            AS NEL
      ,DECODE(ffud.ffud_ffudparameter_id,4347,ffud.ffud_wert,NULL)
            AS NEV
      ,DECODE(ffud.ffud_ffudparameter_id,4348,ffud.ffud_wert,NULL)
            AS APDE
      ,DECODE(ffud.ffud_ffudparameter_id,4349,ffud.ffud_wert,NULL)
            AS APDN
  FROM t_fiblfutter       ffu
      ,t_fiblfutterd      ffud
      ,t_fiblprojekte     fpro
      ,Tz_Fiblprojektbtr  fbtr
      ,HFAEXPL
 WHERE ffu.ffu_id              = ffud.ffud_ffu_id
   AND Fpro.Fpro_Id            = Fbtr.Fpbtr_Fpro_Id
   AND ffu.ffu_exploitation_id = fbtr.fpbtr_exploitation_id
   AND IDEXPLOITATION          = Fbtr.Fpbtr_Exploitation_Id;

Jetzt sieht meine Ausgabe allerdings so aus:
upload_2017-6-19_18-38-34.png

Ich hätte jetzt gerne nur eine Zeile anstatt 10.

PS: Sorry wegen dem Code, jemand nen Tipp, was da grad falsch läuft?

Habt ihr eventuell eine Idee?
 
Zuletzt bearbeitet von einem Moderator:
Jetzt noch ein GROUP BY über die ersten Felder. Die Aufgeteitletn Felder mit einem MAX() zusammenfassen.
Zudem ist DECODE hier fast übertrieben. Ein einfache CASE würde reichen.
Welcher schneller ist, kann ich nicht sagen

SQL:
CASE ffud.ffud_ffudparameter_id WHEN 4340 THEN ffud.ffud_wert ELSE NULL END AS TS
SQL:
SELECT
    ffu.CRE_DAT,
    -- TODO: Bei hexp_fiblnr die Quelle mitgeben
    hexp_fiblnr,
    fpro.FPRO_Projektname,
    ffu.FFU_Datum,
    ffu.FFU_Analysenr,
    ffu.FFU_BEMERKUNG,
    MAX(DECODE(ffud.ffud_ffudparameter_id, 4340, ffud.ffud_wert, NULL)) AS TS,
    MAX(DECODE(ffud.ffud_ffudparameter_id, 4341, ffud.ffud_wert, NULL)) AS Protein,
    MAX(DECODE(ffud.ffud_ffudparameter_id, 4342, ffud.ffud_wert, NULL)) AS Fibre1,
    MAX(DECODE(ffud.ffud_ffudparameter_id, 4343, ffud.ffud_wert, NULL)) AS NDF1,
    MAX(DECODE(ffud.ffud_ffudparameter_id, 4344, ffud.ffud_wert, NULL)) AS ADF,
    MAX(DECODE(ffud.ffud_ffudparameter_id, 4345, ffud.ffud_wert, NULL)) AS Ash,
    MAX(DECODE(ffud.ffud_ffudparameter_id, 4346, ffud.ffud_wert, NULL)) AS NEL,
    MAX(DECODE(ffud.ffud_ffudparameter_id, 4347, ffud.ffud_wert, NULL)) AS NEV,
    MAX(DECODE(ffud.ffud_ffudparameter_id, 4348, ffud.ffud_wert, NULL)) AS APDE,
    MAX(DECODE(ffud.ffud_ffudparameter_id, 4349, ffud.ffud_wert, NULL)) AS APDN
FROM
    t_fiblfutter ffu,
    t_fiblfutterd ffud,
    t_fiblprojekte fpro,
    Tz_Fiblprojektbtr fbtr,
    HFAEXPL
WHERE
    ffu.ffu_id = ffud.ffud_ffu_id
    AND Fpro.Fpro_Id = Fbtr.Fpbtr_Fpro_Id
    AND ffu.ffu_exploitation_id = fbtr.fpbtr_exploitation_id
    -- TODO: Bei IDEXPLOITATION die Quelle mitgeben
    AND IDEXPLOITATION = Fbtr.Fpbtr_Exploitation_Id
GROUP BY
    ffu.CRE_DAT,
    hexp_fiblnr,
    fpro.FPRO_Projektname,
    ffu.FFU_Datum,
    ffu.FFU_Analysenr,
    ffu.FFU_BEMERKUNG,
;
 

Neue Beiträge

Zurück