Crowly Skrevet 9. januar 2009 Rapporter Del Skrevet 9. januar 2009 Har denne selecten (i ett view), som gjør det jeg ønsker, men er noe treg (naturlig nok?). Noen måte å få en mer effektiv ? Base: Oracle 10g Resultatet returneres til Excel (2007) SELECT t1.ist_avis Avis,TO_DATE(TO_CHAR(t1.ist_dato,'DD.MM.YYYY')) Dato, count(t1.ist_navn) Antall, (SELECT count(t2.ist_mr) FROM sbs.otinnstikk t2 WHERE UPPER(t2.ist_mr)='M' AND UPPER(t2.ist_fjern)='N' AND UPPER(t2.ist_navn)!='FULLDISTRIBUSJON' AND t1.ist_avis = t2.ist_avis AND t1.ist_dato = t2.ist_dato GROUP BY t2.ist_avis,t2.ist_dato) Man, (SELECT count(t3.ist_mr) FROM sbs.otinnstikk t3 WHERE (UPPER(t3.ist_mr)='X' OR UPPER(t3.ist_mr)='R') AND UPPER(t3.ist_fjern)='N' AND UPPER(t3.ist_navn)!='FULLDISTRIBUSJON' AND t1.ist_avis = t3.ist_avis AND t1.ist_dato = t3.ist_dato GROUP BY t3.ist_avis,t3.ist_dato) Rull FROM sbs.otinnstikk t1 WHERE UPPER(t1.ist_fjern)='N' AND UPPER(t1.ist_navn)!='FULLDISTRIBUSJON' GROUP BY t1.ist_avis,t1.ist_dato; Den den gjør er å telle opp antall innstikk pr avis pr dag/dato, og hvorden disse innstikkene er fordelt på manuelle (ist_mr=M) eller rull (ist_mr=R eller X ). Ønsker kun å ha med de innstikkene som er satt i produksjon (ist_fjern=N) og det som ikke er fulldistribusjon (ist_navn!='FULLDISTRIBUSJON') Resultatet blir ca slik: AVIS DATO ANTALL MAN RULL ----- ---------- --------- --------- --------- ABBS 02.06.2008 3 2 1 ABBS 03.06.2008 3 3 ABBS 04.06.2008 2 2 ABBS 05.06.2008 2 1 1 ABBS 06.06.2008 2 2 Det hjelper å legge på ett parameter i MS query/Excel slik at antall rader som blir returnet blir begrenset av valgt tidsperiode. Men fjernet dette da jeg tenkte at det ville være greiere å gjøre i pivottabellen (i Excel). (Er ikke særlig kjent med JOIN syntaxen, derfor har jeg en "lei tendens" til å sette koblingene i where, selv om dette er gammelt, hvis noen skulle føle ett behov for å påpeke dette) Lenke til kommentar
Redak Tøren Skrevet 13. januar 2009 Rapporter Del Skrevet 13. januar 2009 Mulig det vil være raskere å kjøre to SQL-setninger? Først en som teller, slik at du kan sette antall oppføringer til en variabel, og deretter bygge en ny SQL-setning basert på informasjonen fra første telling. Nå ser jeg at du ikke holder på med samme språk som meg, men det er slik jeg gjør det og det går veldig raskt. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå