Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...