20. juli 2005 - 13:47Der er
13 kommentarer og 1 løsning
Undgå union all?
Hej
Jeg laver statistik for en 10 års periode, og har hidtil lavet den vha Union all. Men er der en nemmere måde at gøre det på, så jeg ikke behøver at gentage koden 10 gange fr at få optællingen sorteret på år? Problemet er at året står i en streng der består af klokkeslet, dato og år. Jeg skal have optalt antal fejlrapporter der lever op til kriterierne, fordelt på år.
Her er et exempel på den kode jeg bruger nu:
SELECT '1996' Aar, 'Antal i alt' Tekst, Count(F.Fejlrapportnr) FROM Fejlrapport F, Objekttilstand O WHERE F.Fejlrapportnr = O.Fejlrapportnr AND egenskabsnr=27 and opslagsnr =11 AND F.datotid CONTAINING '%1996%' /* i perioden 1996 */ AND F.Fejlrapportnr IN (SELECT Fejlrapportnr From Objekttilstand WHERE Egenskabsnr = 35 and Opslagsnr = 1) AND fejltype NOT IN (303,304,309,310)
UNION ALL
SELECT '1997' Aar, 'Antal i alt Tekst, Count(F.Fejlrapportnr) FROM Fejlrapport F, Objekttilstand O WHERE F.Fejlrapportnr = O.Fejlrapportnr AND egenskabsnr=27 and opslagsnr =11 AND F.datotid CONTAINING '%1997%' /* i perioden 1997 */ AND F.Fejlrapportnr IN (SELECT Fejlrapportnr From Objekttilstand WHERE Egenskabsnr = 35 and Opslagsnr = 1) AND fejltype NOT IN (303,304,309,310)
Union all, og så videre derudad. Jg håber meget at der er nogen der kan hjælpe!!!
Jeg har fedtet med det og er nåt frem til følgende, men kan stadig ikke løse mit primære problem: at få en sortering pr år.. Med nedenstående kode lægger den blot værdierne for de to år sammen.
SELECT Count(distinct F.Fejlrapportnr) FROM fejlrapport f, objekttilstand o WHERE f.fejlrapportnr = o.fejlrapportnr AND fejltype IN(303,304) AND f.fejlrapportnr IN (SELECT fejlrapportnr FROM fejlrapport WHERE datotid containing '1996' OR datotid containing '1997') AND f.fejlrapportnr IN (SELECT fejlrapportnr FROM objekttilstand WHERE egenskabsnr = 35 and Opslagsnr = 1)
Jeg har prøvet at lave en group by på datotid, men det dur ikke, den tæller ikke sammen da alle datotid er forskellige. Kan man lave et nummer med at hive årene ovr i en anden tabel eller sådan noget?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.