extra1, extra2, ...
sind "zusätzliche Spalten" in Kreuztabellen-Terminologie.
Das Handbuch für das Modul tablefunc
erklärt die Regeln:
Und weiter unten:
Fette Hervorhebung wichtiger Teile von mir.
Sie sortieren nur nach row_name
:
ORDER BY row_name ASC
Im ersten Beispiel spielt es keine Rolle, wo Sie filtern mit:
WHERE ... t.extra1 = 'val1' -- single quotes by me
Alle Eingabezeilen haben extra1 = 'val1'
ohnehin. Aber im zweiten Beispiel ist es wichtig, wo Sie filtern mit:
WHERE ... t.extra1 IN('val1', ...) --> More values
Jetzt wird die erste fettgedruckte Anforderung oben für die zusätzliche Spalte extra1
verletzt . Während die Sortierreihenfolge der ersten Eingabeabfrage nicht deterministisch ist, ergeben sich Werte für die "extra"-Spalte extra1
werden willkürlich ausgewählt. Je mehr mögliche Werte für extra1
, je weniger Zeilen am Ende 'val1' haben:das haben Sie beobachtet.
Sie können es trotzdem zum Laufen bringen:extra1 = 'val1'
melden für jeden row_name
das mindestens eines davon hat, ändern Sie den ORDER BY
zu:
ORDER BY row_name, (extra1 <> 'val1')
Sortiert 'val1' oben. Erklärung für diesen boolean
Ausdruck (mit Links zu weiteren):
Andere "zusätzliche" Spalten werden immer noch willkürlich gewählt, während die Sortierreihenfolge nicht deterministisch ist.
Kreuztabellengrundlagen: