Announcement

Collapse
No announcement yet.

Pivot Abfrage

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Pivot Abfrage

    Hallo zusammen

    Ich habe folgende Tabelle (SQL Server 2019 Express):

    ID Artikel_ID FieldName FieldValue
    1000 1 ProdTyp Grund- und Industriereiniger
    1001 1 Allergene Allergene: Limonene
    1002 1 APicto1 Hartboden.png
    1003 1 APicto2 Nasswischen.png

    Und möchte diese mit Pivot in folgedes Format bringen:

    Artikel_ID ProdTyp Allergene APicto1 APicto2
    1 Grund- und Industriereiniger Allergene: Limonene Hartboden.png Nasswischen.png

    Hab im web folgendes Beispiel gefunden:

    select *
    from tbl
    unpivot (value for name in (FieldValue)) up
    pivot (max(value) for FieldName in (ProdTyp,Allergene,APicto1,APicto2)) p
    where Artikel_ID = '1'

    Damit erhalte ich jedoch folgendes Resultat:

    ID Artikel_ID name ProdTyp Allergene APicto1 APicto2
    1000 1 FieldValue Grund- und Industriereiniger NULL NULL NULL
    1001 1 FieldValue NULL Allergene: Limonene NULL NULL
    1002 1 FieldValue NULL NULL Hartboden.png NULL
    1003 1 FieldValue NULL NULL NULL Nasswischen.png

    Was kann ich tun, damit ich nur einen Record erhalte? DIe ID benötige ich nicht.
    Habe schon Einiges versucht, aber nichts zielführendes gefunden.

    PS: Habe bisher noch nie mit Pivot geabeitet...

    Gruss
    X-Dream
    Zuletzt editiert von X-Dream; 09.08.2022, 17:48.

  • #2
    Solche Abfragen sind problematisch, sie machen eigentlich nur Sinn, wenn man sie dynamisch zusammenbaut.
    Außerdem ist es bei so speziellen SQL Statements wichtig, welche DB es ist, die Syntax unterscheidet sich sehr.

    hier oracle db:
    Code:
    select * from (
      select artikel_id, feldname, feldwert
        from artikel
    ) pivot (
    min(feldwert) for feldname in ('ProdTyp', 'Allergene','APicto1','APicto2')
    );
    Gruß, defo

    Comment

    Working...
    X