2012-04-01 16 views
-1

Ich bin in einer Situation, die leicht zu sehen ist, aber ich kann es sowieso nicht lösen. Das Problem ist, ich möchte einen Spaltennamen header (nicht der Wert) basierend auf einer Bedingung. Ich möchte die folgende Sache:Bedingte Spaltenüberschrift in Mysql

SELECT DISTINCT (CASE bool_var WHEN 1 
           THEN SUM(r.amount_dbl) AS RECEIVED 
           ELSE "0" AS Issued END) 
FROM table 

Ist es möglich? Bitte helfen Sie in dieser Hinsicht.

+0

Ihre 'bool_var' mit Reichweite Reihe ändert sich? –

+0

Warum versuchen Sie, in der Zeile zu aggregieren? Ihre Abfrage scheint auch ohne das Problem mit dem Spaltennamen seltsam zu sein. – frail

+0

Was ist das Problem, beide Spalten zu haben? – newtover

Antwort

0

Nein, das ist nicht möglich.

Eine Spalte darf für jede Zeile keinen anderen Namen haben.

+0

Nein, es ist eigentlich ein Spaltenwert. – sarwar026

0

Nein, Sie können keine bedingten Spaltentitel festlegen. Die case-Funktion arbeitet Zeile für Zeile. Was wäre der Spaltentitel, wenn die Zeilen 1, 3 und 5 den Header "ungerade" erzeugen, während die Zeilen 2, 4 und 6 den Header "gerade" erzeugen?

1

Nein, es ist nicht möglich, differentielle Spaltennamen innerhalb der "case" -Anweisung zu haben. Aber wie ich über Ihre Anfrage kommentiert habe, scheint auch ein bisschen daneben zu liegen. Nur eine wilde Vermutung, aber versuchen Sie das zu erreichen? :

SELECT 
    (CASE bool_var WHEN 1 THEN "RECEIVED" 
    ELSE "ISSUED" END) as condition, 
    SUM(r.amount_db1) as condition_sum 
FROM table r 
GROUP BY bool_var 

Edit: Dieses im Sinne der SQL-Abfrage hässlich, langsam und falsch ist, aber hier geht es:

SELECT 
    SUM(amount_db1) AS RECEIVED, 
    (SELECT SUM(amount_db1) FROM table WHERE bool_var != 1) AS ISSUED 
FROM table 
WHERE bool_var = 1 
+0

Ihre Lösung scheint zwei Zeilen zurückzugeben, eine als "EMPFANGEN" und eine weitere Zeile als "AUSGEBEN". Aber meine Absicht ist es, es in derselben Reihe zu zeigen. das ist das Problem. Danke für deine Zeit, aber ich bin bis jetzt in Schwierigkeiten. – sarwar026

+0

Danke für Ihre Mühe. Ich bin wirklich dumm. Es gibt keinen Bedarf für den dynamischen Header-Namen, den ich gerade gefunden habe. Da ich zwei Spalten anzeigen muss, kann es auch statischen Namen haben. Es tut mir wirklich leid für euch alle. – sarwar026

Verwandte Themen