[ mika @ 10.10.2006. 15:09 ] @
Pozdrav drugari.

Ovo je, na neki način, nastavak teme od pre godinu ipo dana, sa adrese http://www.elitesecurity.org/t...-sa-forme-koje-nije-definisano .

Radi se o sledećem: kako napraviti, unutar TRANSFORM query-ja grupisanje? Odnosno, kako grupisati column headinge u okviru nekih vrednosti, kao npr:

Code:

TRANSFORM Sum(tblListe.Time) AS SumOfTime
SELECT tblListe.ID_Employee
FROM tblListe
GROUP BY tblListe.ID_Employee
PIVOT tblListe.Code 


S obzirom da su kodovi od 100 do 999, kada pokrenem ovaj upit, MS Access mi javi grešku "Too many column headers", što je i logično jer ima 900 kolona
E sad, ja sam došao na ideju da PIVOT liniju napišem kao :

Code:

PIVOT tblListe.Code IN (100-199, 200-299...)


...medjutim, to neće da može, javlja se greška "data type mismatch in query expression". Nikakve akrobacije nisu uspele, pokušao sam i sa 100:199, i 100;199 i sa 100::199 i sa 100..199 ali neće. Alternativa je sledeća, ovo je upit koji radi (provereno):

Code:

SELECT tblListe.ID_Employee,formatnumber(Sum(IIf(Code>=100 And Code<200,time,0)),2) AS [100-199], 
Sum(IIf(Code>=200 And Code<300,time,0)) AS [200-299],
Sum(IIf(Code>=300 And Code<400,time,0)) AS [300-399],
Sum(IIf(Code>=400 And Code<500,time,0)) AS [400-499],
Sum(IIf(Code>=500 And Code<600,time,0)) AS [500-599],
Sum(IIf(Code>=600 And Code<700,time,0)) AS [600-699],
Sum(IIf(Code>=700 And Code<800,time,0)) AS [700-799],
Sum(IIf(Code>=800 And Code<900,time,0)) AS [800-899],
Sum(IIf(Code>=900 And Code<1000,time,0)) AS [900-999]
FROM tblListe
GROUP BY tblListe.ID_Emp;


E sad, ovaj upit se malo sporije izvršava, kapiram da bi se TRANSFORM upit izvršavao mnogo brže, samo kad bi skontao kako da napravim to grupisanje. Ima li iko ideju kako to da odradim, ili da iskoristim moje potonje "Solomonsko" rešenje?

Pozdrav!


[ goranvuc @ 10.10.2006. 15:16 ] @
Jesi probao sa:
Code:

TRANSFORM Sum(tblListe.Time) AS SumOfTime
SELECT tblListe.ID_Employee
FROM tblListe
GROUP BY tblListe.ID_Employee
PIVOT LEFT(tblListe.Code, 1)

koliko sam shvatio, to ti treba.
[ mika @ 10.10.2006. 15:28 ] @
Ne pamtim kada mi je neko ovako brzo odgovorio. Znao sam da može jednostavnije, ali ti si prevazišao sve granice, ovo je toliko jednostavno da nemam reči.

Jedino što u ovom slučaju ne mogu da kontrolišem nazive kolona (što nije neki veliki problem), ali se zato u ovom slučaju upit izvršava 5 (PET!) puta brže nego prethodni (testirano na 70.000 recorda).

Kralju, hvala ti puno!

[ goranvuc @ 10.10.2006. 15:35 ] @
Nema na cemu, ponekad je potrebno malo distance da bi covek resio problem. Verovatno bi se i ti ovog istog setio sutra kad se malo "ohladis".