Hoi,
Ik ben een tijdje bezig met SQL. Ik moet een rapport maken die de uren laat zien van de werknemers over een heel jaar. Dit moet van het jaar 2001 t/m 2004 zijn. Om nou 365 keer 4 de dagen apart in te voeren is niet te doen en de query zou dan te lang worden. (lekker traag wordt het dan
)
Is er misschien een oplossing dat Oracle zelf de dagen genereert?
hier een vb'tje van mijn SQL code:
hier staat 1 week gedifinieerd. bij 365 dagen zou het dus erg lang zijn
ik heb met google gezocht, met google op deze site gezocht maar ik vond geen echte oplossingen..
Ik ben een tijdje bezig met SQL. Ik moet een rapport maken die de uren laat zien van de werknemers over een heel jaar. Dit moet van het jaar 2001 t/m 2004 zijn. Om nou 365 keer 4 de dagen apart in te voeren is niet te doen en de query zou dan te lang worden. (lekker traag wordt het dan
Is er misschien een oplossing dat Oracle zelf de dagen genereert?
hier een vb'tje van mijn SQL code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| select
TO_CHAR(SYSDATE, 'DD-Mon-YYYY')||to_char(sysdate, ' HH24:MI:SS') "created on",
uren.omschrijving, uren.Dag1, uren.uren1,
uren.Dag11, uren.uren11,
uren.Dag12, uren.uren12,
uren.Dag13, uren.uren13,
uren.Dag14, uren.uren14,
uren.Dag15, uren.uren15,
uren.Dag16, uren.uren16, (uren.uren1+uren.uren11+uren.uren12+uren.uren13+uren.uren14+uren.uren15+uren.uren16) totaal
from
(select uw.w_omschrijving omschrijving
, to_char(to_date('10-JAN-2004'), 'day', 'nls_date_language = dutch') Dag1
, to_char(to_date('11-JAN-2004'), 'day', 'nls_date_language = dutch') Dag11
, to_char(to_date('12-JAN-2004'), 'day', 'nls_date_language = dutch') Dag12
, to_char(to_date('13-JAN-2004'), 'day', 'nls_date_language = dutch') Dag13
, to_char(to_date('14-JAN-2004'), 'day', 'nls_date_language = dutch') Dag14
, to_char(to_date('15-JAN-2004'), 'day', 'nls_date_language = dutch') Dag15
, to_char(to_date('16-JAN-2004'), 'day', 'nls_date_language = dutch') Dag16
, sum(decode(uw.w_omschrijving,test1.omschrijving,decode(to_date(test1.datum2),to_date('10-1-2004'),test1.uren1,'0'),'0')) uren1
, sum(decode(uw.w_omschrijving,test1.omschrijving,decode(to_date(test1.datum2),to_date('11-1-2004'),test1.uren1,'0'),'0')) uren11
, sum(decode(uw.w_omschrijving,test1.omschrijving,decode(to_date(test1.datum2),to_date('12-1-2004'),test1.uren1,'0'),'0')) uren12
, sum(decode(uw.w_omschrijving,test1.omschrijving,decode(to_date(test1.datum2),to_date('13-1-2004'),test1.uren1,'0'),'0')) uren13
, sum(decode(uw.w_omschrijving,test1.omschrijving,decode(to_date(test1.datum2),to_date('14-1-2004'),test1.uren1,'0'),'0')) uren14
, sum(decode(uw.w_omschrijving,test1.omschrijving,decode(to_date(test1.datum2),to_date('15-1-2004'),test1.uren1,'0'),'0')) uren15
, sum(decode(uw.w_omschrijving,test1.omschrijving,decode(to_date(test1.datum2),to_date('16-1-2004'),test1.uren1,'0'),'0')) uren16
from
uurreg.t_werksoort uw,
(select
uw.w_omschrijving Omschrijving
, ug.reg_datum Datum2
, ug.reg_uren uren1
, ap.naam naam
from
uurreg.t_reguur ug
, uurreg.t_werksoort uw
, alg.t_personeel ap
where
ug.reg_datum between '01-JAN-2004' and '31-DEC-2004'
and ug.reg_personeelcode = ap.personeel
and uw.w_code = ug.reg_werksoortcode
and ap.naam = 'Berg'
order by ug.reg_datum ) test1
where uw.w_omschrijving = test1.omschrijving (+)
group by
uw.w_omschrijving) uren
order by uren.omschrijving |
hier staat 1 week gedifinieerd. bij 365 dagen zou het dus erg lang zijn
ik heb met google gezocht, met google op deze site gezocht maar ik vond geen echte oplossingen..
[ Voor 11% gewijzigd door Verwijderd op 09-04-2004 11:18 ]