NeoBase: Krydstabuleringer

<< Click to Display Table of Contents >>

Navigation:  NeoBase-opgørelser & replikat database >

NeoBase: Krydstabuleringer

Previous pageReturn to chapter overviewNext page

Krydstabuleringer, basalt (Pivot Table)

Krydstabuleringer er nyttige ved sum-opgørelser og drejer sig basalt om at få tabuleret sum-data på kategorier i to niveauer, der placeres som hhv. vertikal og horisontal kategori-akse som f.eks.:

KRYDS-TAB-RESULT

hvor kategorierne er hhv. Fødsels-år (vertikale) og respirationsstøtte (horisontale).
Krydstabuleringer hedder på engelsk crosstabulations eller blot crosstabs, og hvis de udover opstillingen også indeholder den primære forespørgsel vil de i f.eks. MS Access kaldes Crosstab Queries. I MS Excel og visse andre regneark vil denne opstillingsmodulering kaldes en PivotTable.

Krydstabuleringer med NeoBase 6 Reader og MS Excel

NeoBase 6 Reader's SQL (såvel som ISO SQL) kan ikke umiddelbart præsentere data i sådanne krydstabuleringer uden komplekse SQL-mellemlagringer, hvorfor det som en betydeligt nemmere løsning anbefales blot at udtrække sum-data med gruppering i to niveauer - dvs. ialt tre kolonner - der herefter eksporteres til f.eks. MS Excel, der ganske nemt konverterer til krydstabulering.

SQL for udtræk af data for f.eks. ventilation ved fødslen på lokalfødte børn kategoriseret på fødselsår er:

/* Resp.-støtte til lokalfødte */
SELECT
EXTRACT(YEAR FROM np.Fodselsdato) AS "Fødsels-år",
np.Ventilation,
COUNT(np.PersonId) AS "Antal børn"
FROM NeoPers np JOIN Neobase2 n2 ON n2.PersonId = np.PersonId
WHERE
n2."Indlaeggelses Nr" = 1 AND n2."Overflyttet fra" = 0
GROUP BY
[Fødsels-år], np.Ventilation;

hvor man evt. kunne tilføje filter for selekterede årgange.
I NeoBase 6 Reader vil udtrækket præsenteres med tre kolonner som nedenfor, hvor den tredie udgør sum-kolonnen:

KRYDS-TAB-TRIN-1

Efter eksport til MS Excel, vil man kunne markere data-området og fra Data-menuen formatere data til opstilling som krydstabulering:

KRYDS-TAB-TRIN-2

hvor man efterfølgende trækker de viste kolonnetitler hen som hhv. Række-, Kolonne- og Data-felter:

.KRYDS-TAB-TRIN-3

der herved vil blive præsenteret som:

KRYDS-TAB-TRIN-4

Hvis man ønsker eentydigt at få vist den ventilationsmodus, der er knyttet til hver af de anvendte nummerkodninger, vil man for det primære SQL-udtryk kunne transformere de udtrukne koder for ventilationsmodus til at blive vist som en selvforklarende tekst som i:

/* Resp.-støtte til lokalfødte */
SELECT
EXTRACT(YEAR FROM np.Fodselsdato) AS "Fødsels-år",
CASE np.Ventilation
 WHEN 0 THEN '0 Vent ingen'
 WHEN 1 THEN '1 Maske-vent'
 WHEN 2 THEN '2 Maske-CPAP'
 WHEN 3 THEN '3 Tube-vent'
 WHEN 9 THEN '9 Vent uopl'
END AS 'Resp-støtte',
COUNT(np.PersonId) AS "Antal børn"
FROM NeoPers np JOIN Neobase2 n2 ON n2.PersonId = np.PersonId
WHERE
n2."Indlaeggelses Nr" = 1 AND n2."Overflyttet fra" = 0
GROUP BY
[Fødsels-år], [Resp-støtte];

Hvorved krydstabuleringen i Excel kommer til at se ud som nedenfor:

KRYDS-TAB-TRIN-4B

Krydstabuleringer med NeoBase 6 Reader og MS Access

En tilsvarende funktion kan opnås ved eksport til MS Access, hvor forespørgslen her blot foretages vha. af en særlig krydstabuleringsvariant (Crosstab Query) på de fra NeoBase 6 Reader eksporterede data:

KRYDS-TAB-MSACCESS

KRYDS-TAB-MSACCESS-2

N.B.: Husk at MS Access (såvel som en række andre databaser) ikke accepterer punktum'er i feltnavne og for dette tilfælde heller ikke i afledte feltnavne som hér "Fødsels-år" og "Resp-støtte" ("Resp" skal altså som hér forkortes uden punktum). Acccess accepterer heller ikke punktummer i feltværdier, hvis disse sekundært skal bruges som kolonne-etiketter, hvilket her er tilfældet for de forskellige ventilations-modus - f.eks. anvendes blot "Vent uopl" fremfor "Vent. uopl.".

Krydstabulering via MS Excel vs. via MS Access

Excel og Access har hver deres fordele.

Excel giver som det ses også række og kolonne totaler, men vil som standard opsummere data som en sum (SUM) af værdier, der således forudsættes at være talværdier, der så igen som i eksemplet forudsættes at være forhånds-aggregerede data. Excel kan dog også efterjusteres til at opsummere som antal (COUNT) af forekomster indenfor hver gruppering.

Access giver også valgfrihed for om de summerede data opnås som en sum (SUM) af forhånds-aggregerede data eller som antal (COUNT) af værdier indenfor hver gruppering og accepterer således både (men ikke samtidigt) forhånds-aggregerede (dvs. numeriske data) og non-aggregerede non-numeriske data.

Excel har den fordel, at Excel oven over kolonne etiketterne viser titlen på den kolonne (Ventilation), der krydstabuleres:

NeoBaseCrosstab

hvor Access blot som kolonneoverskrifter viser de værdier, der aggregeres på:

KRYDS-TAB-MSACCESS-PLAIN

_____________________________

27-10-2017 - © 2003-2017 Niels Knabe