Tja! Hej Ja det verkar som att det ska fungera. Gjorde ett litet test här som jag tycker verkar lyckat.HJälp med en SQL-fråga
Sitter och klurar lite på en sql-fråga och inser att jag behöver hjälp.
Jag har en tabell som ser ut så här:
Subsid Subtype Startdate EndDate status Subamount Regtime custid
85 10 2005-09-22 2005-12-31 2 99,00 kr 2005-09-22 18:26:30 107
86 10 2005-09-22 2005-12-31 2 99,00 kr 2005-09-22 18:27:28 108
127 10 2005-09-23 2005-12-31 2 99,00 kr 2005-09-23 08:35:55 109
87 10 2005-09-22 2005-12-31 3 99,00 kr 2005-09-22 18:49:53 110
566 16 2005-12-29 2006-02-02 1 99,00 kr 2005-12-29 16:30:00 110
160 10 2005-09-23 2005-12-31 2 99,00 kr 2005-09-23 20:10:56 111
88 10 2005-09-22 2005-12-31 2 99,00 kr 2005-09-22 19:05:16 112
Tabellen hanterar prenumerationer. En kund kan ha flera prenumerationer. Om ni tittar på custid 110 så förekommer den flera gånger i tabellen dvs har två olika typer av prenumerationer. Om man sedan tittar på status så har den ena raden status 1 och den andra 3. Det jag nu vill göra är att plocka ut alla custid som har status 3, men om cutsid finns på flerrader och har status < 3 så skall den inte plockas med.
Status 3 står för EJ AKTIV. Så det jag vill göra är hämta ut alla kunder som inte har en aktiv prenumeration. Om kunden finns med status 3 men även finns med status < 3 då skall den inte tas med.
hoppas ni förstår.
/TyronneSv: HJälp med en SQL-fråga
Jag tror att det här ska funka
SELECT * FROM tabell t1
WHERE status = '3'
AND NOT EXISTS(SELECT * FROM tabell t2
WHERE status IN ('1','2')
AND t1.custid = t2.custid)
Så ska du få med alla som har ett abonnemang med status 3 men som inte har abonnemang som är 1 eller 2.
Om jag inte har gjort någon miss någonstans så ska denna fungera åtminstone i Oracle och med status som strängvärde.
//DavidSv: HJälp med en SQL-fråga
//David