Samoht: Kreuztabelle? Oder doch nicht

Beitrag lesen

Gudn!

Nein, kannst Du mit Spaltenaliasen nicht.

Da bin ich nach meinem Post auch drüber gestolpert... :(

Daher wäre es

SELECT
    lambda,
    MAX(CASE WHEN messreihe = 1 THEN messung ELSE NULL END) AS messreferenz,
[...]
    FROM
        daten
    GROUP BY lambda

  
\*handandiestirnklatsch\*  
  
Klar! :)  
  
Danke!  
  

> Zu Deiner Einschränkung für lambda < 2.2:  
> [...]  
  

> verwendest Du \*nicht\* die HAVING-Klausel sondern die WHERE-Klausel, vergleiche dazu einfach den verlinkten Abschnitt über Aliasnamen  
>   
> ~~~sql
  

> SELECT  
>     lambda,  
>     MAX(CASE WHEN messreihe = 1 THEN messung ELSE NULL END) AS messreferenz,  
>     MAX(CASE WHEN messreihe = 2 THEN messung ELSE NULL END)  
>       - MAX(CASE WHEN messreihe = 1 THEN messung ELSE NULL END AS messreihe2,  
>     MAX(CASE WHEN messreihe = 3 THEN messung ELSE NULL END)  
>       - MAX(CASE WHEN messreihe = 1 THEN messung ELSE NULL END AS messreihe3,  
>     MAX(CASE WHEN messreihe = 5 THEN messung ELSE NULL END)  
>       - MAX(CASE WHEN messreihe = 1 THEN messung ELSE NULL END AS messreihe5  
>     FROM  
>         daten  
>     WHERE  
>         -- Schränke die betrachteten Datensätze ein, bevor ausgewertet und  
>         -- gruppiert wird.  
>         lambda < 2.2  
>     GROUP BY lambda  
> 

Mhm... ich hatte als erstes WHERE drin am Schluss... Aus welchem Grund auch immer hatte es nicht funktioniert und ich bin zu HAVING übergegangen. Hatte wahrscheinlich einen Fehler drin, es funktioniert nämlich tatsächlich wie man es erwarten sollte. Danke.

HAVING schlägt erst dann zu, wenn schon alles ausgewertet wurde. EXPLAIN sollte da Unterschiede aufzeigen.

Macht Sinn und EXPLAIN zeigt es auch in der Tat. Ergebnis ist, die Abfrage ist nochmal ne Spur kürzer.

Falls Du mal in der Gegend sein solltest: Ein kühles Bier sei Dir sicher! ;)

Gruß aus Fürth in Mittelfranken,
Samoht

--
fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}