Announcement

Collapse
No announcement yet.

In einer Abfrage Zeilen zu Spalten machen

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

  • In einer Abfrage Zeilen zu Spalten machen

    Hallo,

    ich habe eine Tabelle in der ich im wesentlichen 3 Spalten haben die ersten beiden erhalten zwei verschiedene Fremdschlüssel und die dritte einen zugewiesenen Wert. Hat jemand eine Idee, wie ich eine Abfrage schreiben kann, so dass alle Fremdschlüssel der ersten Spalte zu Spalten werden, so dass dann alle zugewiesenen Werte für den zweiten Fremdschlüssel in einer Zeile stehen?

    Der einzige Gedanke der mir bisher kam, war dafür in einer Stored Procedure dynamisch eine SELECT-Anweisung zu erzeugen, welche die Tabelle immer wieder mit sich selber joined.

  • #2
    Hallo,

    schonmal die Suche mit "Kreuztabelle" bemüht?

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Vielen Dank für den Hinweis. Habe da jetzt auch mal kräftig nach gegoogled, aber am Ende läuft es wohl doch darauf hinaus, dass ich in einer Stored Procedure mir dynamisch eine Abfrage zusammenbastle die mir die Kreuztabelle erstellt und mit EXEC ausführe, da ich keine fixe Anzahl von Gruppen habe.

      Comment


      • #4
        Welche Version verwendest Du? Ab 2005 gibt es die PIVOT Funktion hierfür.

        Wenn es doch 2000 ist und die Anzahl Spalten fix ist, kann man es auch ohne dynamische Abfragen problemlos über CASE WHEN Statements abbilden.
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          Vielen Dank, die PIVOT-Funktion (nutze auch MS SQL 2005) hatte ich auch gefunden. Dennoch komme ich wohl nicht drum herum die Abfrage dynamisch zu erzeugen, da die PIVOT Syntax soweit ich es herausgelesen habe zunächst die Auflistung aller Spalten verlangt, welche dargestellt werden sollen:
          Code:
          SELECT <nicht pivotierte Spalte>,
          
              [erste pivotierte Spalte] AS <Spaltenname>,
          
              [zweite pivotierte Spalte] AS <Spaltenname>,
          
              ...
          
              [letzte pivotierte Spalte] AS <Spaltenname>
          
          FROM
          ...
          D.h. ich muss dennoch erst die Spalten, die letztlich entstehen sollen ermitteln.

          Comment

          Working...
          X