2016-06-20 10 views
1

Ich würde gerne Ihre Hilfe haben, die Spalte dieser Tabelle in eine Reihe zu transponieren. Ich versuche, die Projektnamen (Spalte 1) jeweils zu einem eigenen Spaltenkopf zu machen, wobei der MUVs-Wert als Spaltenwert eingegeben wird.SQL: Spalte als Zeile in Diagramm 0-0 Dynamisch transponieren

Ich habe mehr als 20 Threads zu diesem Thema gelesen, aber sie verwenden verschiedene SQL-Pakete und Code, die ich nicht verwenden kann.

Die ideale Lösung wäre, diese Abfrage ändern Sie die gewünschte Ausgabe der Abfrage zu erstellen:

Aktuelle Abfrage:

SELECT 
    cust_gae_account.project_name as "Project Name", 
    cust_be_project_usage.unique_visitor_count as "MUVs", 
    cust_be_project_usage.billing_period_start as "Month" 
FROM 
    cust_be_project_usage 
INNER JOIN 
    cust_gae_account 
    ON cust_gae_account.account_id = cust_be_project_usage.project_id 
WHERE 
    cust_be_project_usage.admin_account_id = {ACCOUNT_ID} 

Aktuelle Abfrage Ausgang:

Project Name  |  MUVs  |  Month 
----------------------------------------------------- 
ProjectAAAAAZ |  68000  | Jun 01, 2016 
DynamicName  |  3200  | Jun 01, 2016 
ProjectAAAAAZ |  21000  | May 01, 2016 
DynamicName  |  4500  | May 01, 2016 
CustomProject |  117000  | Jun 01, 2016 
CustomProject |  118400  | May 01, 2016 

gewünschte Abfrage Ausgabe:

Project Name  | CustomProject | ProjectAAAAAZ | DynamicName 
------------------------------------------------------------------- 
Jun 01, 2016  |  117000  |  68000  |  3200 
May 01, 2016  |  118400  |  21000  |  4500 

Hinweise:

  • Wir PostgreSQL über Chartio verwenden wir nur Basis SQL
  • Wir benutzerdefinierte Funktionen nicht traurig
  • Namen und Anzahl von Projekten verwenden können, können dynamisch ist, variiert von 1 bis 20
  • MUVs sind immer numerisch, es gibt keine Duplikate
+0

Welche DBMS verwenden Sie? –

+0

Wir verwenden PostgreSQL. Wir können keine benutzerdefinierte Funktion verwenden, nur Abfragen leider – Hazjier

+0

Sie möchten grundsätzlich eine Pivot-Tabelle. Sie könnten es mit 'Kreuztabellen 'tun https://www.postgresql.org/docs/9.1/static/tablefunc.html, aber es gibt eine Tabelle mit einer statischen Breite mit vordefinierten Spalten und Typen aus. Sie müssen dies außerhalb der DB tun. ODER, erstellen Sie eine dynamische Abfrage und führen Sie es mit 'EXECUTE' aus. – AlexanderMP

Antwort

0

Sie können die Kreuztabelle https://www.postgresql.org/docs/9.1/static/tablefunc.html verwenden, sie funktioniert jedoch nur mit einer statischen Spaltenliste. Sie benötigen also eine dynamische Abfrage. Sie müssen diese Abfrage definieren und ausführen.

Ich kann es aber nicht testen. Es sollte funktionieren, aber meine Vermutung ist, dass es vielleicht nicht, in diesen Situationen:

  1. auf einen Skalar verketten durch eine Abfrage gebildet (könnte eine Variable für die man verwenden müssen)
  2. Ich habe bis könnte gemischt eine Spalte irgendwo
  3. nicht sicher, wie Sie den {ACCOUNT_ID} Parameter übergeben, so dass Sie auch müssen möglicherweise geändert werden, dass
+0

Hallo Alexander, vielen Dank, dass du dir die Zeit genommen hast, dies zu beantworten. Wenn ich die Abfrage ausführen bekomme ich einen Syntaxfehler bei der ersten öffnenden Klammer (nach Ausführen) – Hazjier

+0

Versuchen Sie es dann ohne die Klammern zu tun. Ich werde versuchen, es später in einer tatsächlichen DB zu starten. – AlexanderMP

+0

Vielen Dank für Ihre Hilfe. Ich habe versucht, die Klammern zu entfernen und die Abfrage neu zu formatieren. Ich habe immer wieder Fehler gemacht. Jede Hilfe von dir wäre riesig! – Hazjier