extra1, extra2, ...
zijn "extra kolommen" in kruistabelterminologie.
De handleiding voor de tablefunc-module
legt de regels uit:
En verder naar beneden:
Vetgedrukte nadruk op belangrijke onderdelen door mij.
U sorteert alleen op row_name
:
ORDER BY row_name ASC
Maakt niet uit in het eerste voorbeeld waar je filtert met:
WHERE ... t.extra1 = 'val1' -- single quotes by me
Alle invoerrijen hebben extra1 = 'val1'
hoe dan ook. Maar het is belangrijk in het tweede voorbeeld waar je filtert met:
WHERE ... t.extra1 IN('val1', ...) --> More values
Nu wordt de eerste vetgedrukte vereiste hierboven geschonden voor de extra kolom extra1
. Hoewel de sorteervolgorde van de eerste invoerquery niet-deterministisch is, resulteren de resulterende waarden voor de "extra" kolom extra1
worden willekeurig gekozen. Hoe meer mogelijke waarden voor extra1
, hoe minder rijen 'val1' krijgen:dat is wat je hebt waargenomen.
Je kunt het nog steeds laten werken:rapporteer extra1 = 'val1'
voor elke row_name
die er minstens één heeft, verander de ORDER BY
naar:
ORDER BY row_name, (extra1 <> 'val1')
Sorteert 'val1' bovenaan. Uitleg voor die boolean
expressie (met links naar meer):
Andere "extra" kolommen worden nog steeds willekeurig gekozen terwijl de sorteervolgorde niet bepalend is.
Basisprincipes van kruistabellen: