SQL help

AndrejK

Fizikalc
7. sep 2007
1.279
3
38
SI
Že nekaj časa si razbijam glavo z eno zadevo. Na Oraclu imam eno tabelo iz katere bi rad potegnil dve vrsti podatkov in jih smiselno združil.
V tabeli so podatki o uporabnikih, količini dela ter s katerim sredstvom so to naredili - glasovno izbiranje ali klasično. Nekateri uporabniki uporabljajo obe varianti, nekateri samo eno od teh. Sedaj bi rad za določen dan izpisal, kateri uporabniki so naredili koliko z enim načinom, z drugim načinom ali z obema. V prilogi sta datoteki. Prvo varianto dobim, če dam dva selecta in union, druga je pa želen izpis. Oracle je 10g, tako da pivota še ne pozna...
 

KrNeki99

Fizikalc
3. sep 2007
886
25
28
Ljubljana
tukaj jest vidim da imas rahlo nelogicno.
v prvi tabeli imas samo KOLLI_PBV, ven bi pa rad dobil razdeljeno na KOLLI_PBV in KOLLI_DRUGO ne ves kaj pa je kaj v prvi tabeli.
recimo ID 160 oba PODROČJE MP, KOLLI_PBV 181 in 909
 

AndrejK

Fizikalc
7. sep 2007
1.279
3
38
SI
Tabela je samo ena, razlika je v enem polju, ki označuje, kako je zadeva opravljena. priložen excel je malo okleščen, drugače se lahko vidi, od kod je katera pozicija.
imaš oba selekta na ZS
 
Nazadnje urejeno:

ferdo

Guru
3. sep 2007
10.664
3.940
113
Ljubljana
hmpg.net
Teoretično, v kolikor imaš omejeno število stolpcev (ti imaš), gre to z decode nekaj takege:
select
col_1,
col_2,
sum(decode(col_izbira,'KOLLI_PBV',col_stevec1),
sum(decode(col_izbira,'KOLLI_OSTALO',col_stevec2)
group by col_1, col_2

išči cross matrix sqlplus oracle 9 recimo (oracle 10).

Če pa imaš slučajno testno 11 kje instalirano, pa naredi database link, pa izvajaj sql tam:)
 

AndrejK

Fizikalc
7. sep 2007
1.279
3
38
SI
ni tako enostavno. V tabeli je precej stolpcev in polje v katerem preverjam, na kakšen način je bilo delano ima različne vnose - številke terminalov. Količina je spet v drugem polju.
selekt izgleda približno takole

select ID_UPOR, IME_UPOR, decode(podr, 1, 'HR', 3, 'MP') as PODROCJE, sum(KOLLI) as KOLLI_PBV
from TABELA
where trunc(startzeit) = '3.12.2013'
and leistung='KOM'
and vrsta='MON'
and podr in ('1','3')
and tpmid like 'PbV%'
group by ID_UPOR, IME_UPOR, decode(podr, 1, 'HR', 3, 'MP')

pri varianti za KOLLI_OSTALO popravim le tpmid not like 'PvB%'
 

KrNeki99

Fizikalc
3. sep 2007
886
25
28
Ljubljana
sem sicel bolj na MSSQL, kaj pravis na tole

select ID_UPOR, IME_UPOR, decode(podr, 1, 'HR', 3, 'MP') as PODROCJE,
sum(CASE WHEN tpmid like 'PbV%' THEN KOLLI ELSE 0 END) as KOLLI_PBV ,
sum(CASE WHEN tpmid not like 'PbV%' THEN KOLLI ELSE 0 END) as KOLLI_DRUGO
from TABELA
where trunc(startzeit) = '3.12.2013'
and leistung='KOM'
and vrsta='MON'
and podr in ('1','3')
group by ID_UPOR, IME_UPOR, decode(podr, 1, 'HR', 3, 'MP')
 

AndrejK

Fizikalc
7. sep 2007
1.279
3
38
SI
Citat:
Uporabnik KrNeki99 pravi:
sem sicel bolj na MSSQL, kaj pravis na tole

select ID_UPOR, IME_UPOR, decode(podr, 1, 'HR', 3, 'MP') as PODROCJE,
sum(CASE WHEN tpmid like 'PbV%' THEN KOLLI ELSE 0 END) as KOLLI_PBV ,
sum(CASE WHEN tpmid not like 'PbV%' THEN KOLLI ELSE 0 END) as KOLLI_DRUGO
from TABELA
where trunc(startzeit) = '3.12.2013'
and leistung='KOM'
and vrsta='MON'
and podr in ('1','3')
group by ID_UPOR, IME_UPOR, decode(podr, 1, 'HR', 3, 'MP')


NMJ!!
cheer.gif

To dela!
Hvala!
nahrung002.gif

Pivo v dobrem, ko se srečava v RL!