Archief - PL SQL Lijntje tussen result & totaal

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

AliChemicali

Legacy Member
Hallo ik ben opzoek hoe ik lijntje kan krijgen tussen mijn result en totaal zoals afgebeeld op de volgende afbeelding. Een enter zou ook al goed zijn maar een lijntje is beter.

naamloosyv.png



En hier is mijn code:
Code:
--Ga per instelling na hoeveel patiënten er in de vakantiemaanden juli en augustus in het ziekenhuis of thuis bleven slapen.    
select instelling.result0 Instelling, ziekenhuis.result1 Ziekenhuis,thuis.result1 Thuis from 
(select p.IDMI result0 from imp_patient p group by p.IDMI) instelling
,
(select p.IDMI result0, count(*) result1  from imp_patient p,feit_ligdag f, dim_kalender k, dim_locatie l
where f.patient_id = p.id and f.kalender_id = k.kalender_id and k.maand_nr in (7,8) and f.locatie_id = l.locatie_id and l.code = 0
group by p.IDMI) ziekenhuis
,
(select p.IDMI result0, count(*) result1  from imp_patient p,feit_ligdag f, dim_kalender k, dim_locatie l
where f.patient_id = p.id and f.kalender_id = k.kalender_id and k.maand_nr in (7,8) and f.locatie_id = l.locatie_id and l.code = 1
group by p.IDMI) thuis
where instelling.result0 = ziekenhuis.result0
and ziekenhuis.result0 = thuis.result0


union all


select 'Totaal',ziekenhuis.result1,thuis.result1 from
(select count(*) result1  from imp_patient p,feit_ligdag f, dim_kalender k, dim_locatie l
where f.patient_id = p.id and f.kalender_id = k.kalender_id and k.maand_nr in (7,8) and f.locatie_id = l.locatie_id and l.code = 0
) ziekenhuis
,
(select count(*) result1  from imp_patient p,feit_ligdag f, dim_kalender k, dim_locatie l
where f.patient_id = p.id and f.kalender_id = k.kalender_id and k.maand_nr in (7,8) and f.locatie_id = l.locatie_id and l.code = 1
) thuis

metalleke

Legacy Member
Probeer eens iets zoals:

Code:
SELECT 
	coalesce(instelling, 'totaal') as instelling
	sum(case when l.code = 1 then 1 else 0) as ziekenhuis,
	sum(case when l.code = 0 then 1 else 0) as thuis
	FROM ...
	JOIN ...
	GROUP BY ROLLUP (instelling)

AliChemicali

Legacy Member
metalleke zei:
Probeer eens iets zoals:

Code:
SELECT 
	coalesce(instelling, 'totaal') as instelling
	sum(case when l.code = 1 then 1 else 0) as ziekenhuis,
	sum(case when l.code = 0 then 1 else 0) as thuis
	FROM ...
	JOIN ...
	GROUP BY ROLLUP (instelling)

Nowp werkt ni :/

AliChemicali

Legacy Member
metalleke zei:
Wat is je volledige query?

De functie COALESCE in SQL retourneert de eerste niet-NULL expressie tussen de argumenten.

Daar ben ik toch niks mee?

nameless

Legacy Member
Waar zou je dat eigenlijk willen in de eerste plaats?
Als je het zo zou kunnen outputten heb je een rij met nutteloze gegevens?

En als het om een taak af te geven is kan je je resultaten even opmaken met excel ofzo.

Cycloon

Legacy Member
MaSSaSLaYeR zei:
De functie COALESCE in SQL retourneert de eerste niet-NULL expressie tussen de argumenten.

Daar ben ik toch niks mee?

De clue zit hem in de rollup om je query beter te maken. Dat er een extra lijntje in je resultaat komt zal hier inderdaad niks aan helpen.

metalleke

Legacy Member
Cycloon zei:
De clue zit hem in de rollup om je query beter te maken. Dat er een extra lijntje in je resultaat komt zal hier inderdaad niks aan helpen.

Inderdaad, die coalesce is enkel om "totaal" te tonen ipv "null" in de eerste kolom.

AliChemicali

Legacy Member
nameless zei:
Waar zou je dat eigenlijk willen in de eerste plaats?
Als je het zo zou kunnen outputten heb je een rij met nutteloze gegevens?

En als het om een taak af te geven is kan je je resultaten even opmaken met excel ofzo.

Nee ik vind da gwn proper en tis vo dwh herexamen !

nameless

Legacy Member
Mogelijk is dit een lame oplossing waar ik helemaal geen voorstander van ben

Code:
select '-----------------' as 'instelling','-----------------' as 'ziekenhuis','-----------------' as 'thuis'

union all

de rest

Ik zou toch echt gewoon gaan om even je resultaat op te maken met een teksteditor. Of misschien is het wel een instelling in je databasequery programma.

Cycloon

Legacy Member
Je kan gewoon een select doen van een dummy tabel, iets als:

SELECT '-----','-----','-----' FROM Dummy

Edit: Foei hierboven :p

AliChemicali

Legacy Member
Cycloon zei:
Je kan gewoon een select doen van een dummy tabel, iets als:

SELECT '-----','-----','-----' FROM Dummy

Edit: Foei hierboven :p

da ga toch ni werke want da zen gen integers ^^

Cycloon

Legacy Member
Dan moet die al zijn integers casten naar een string hé. Er zijn databanken die zich dat trouwens totaal niet aantrekken en dat voor jou doen :)

AliChemicali

Legacy Member
Cycloon zei:
Dan moet die al zijn integers casten naar een string hé. Er zijn databanken die zich dat trouwens totaal niet aantrekken en dat voor jou doen :)

Alsk dummy gebruik: "table or view does not exist"

Alsk dual gebruik: "expression must have same datatype as corresponding expression"

Alsk cast naar int met dual: SQL Error: ORA-01722: invalid number
01722. 00000 - "invalid number"

Cycloon

Legacy Member
Die dummy moet je dan ook niet echt gebruiken.

Je kan de string '-------' niet naar een int casten. Je kan je int's daarentegen wel casten naar een string.

AliChemicali

Legacy Member
Cycloon zei:
Die dummy moet je dan ook niet echt gebruiken.

Je kan de string '-------' niet naar een int casten. Je kan je int's daarentegen wel casten naar een string.

Dan hebben we toch geen oplossing :)

Cycloon

Legacy Member
Jawel toch? Je cast al je getallen naar strings, waardoor je perfect die streepjes kan tussenvoegen.

AliChemicali

Legacy Member
Cycloon zei:
Jawel toch? Je cast al je getallen naar strings, waardoor je perfect die streepjes kan tussenvoegen.

Code:
select instelling.instelling, CAST(schooldagen.schooldagen AS VARCHAR2), CAST(nietschooldagen.nietschooldagen AS VARCHAR2) from

Geeft: "missing left parenthesis"

Any Idea?

Cycloon

Legacy Member
Op het eerste zicht lijkt mij dat correct, het probleem zit zeker ergens anders in je query.

Edit: Je moet blijkbaar de lengte vermelden: cast( '22-Aug-2003' AS varchar2(30) )
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan