webForumDet fria alternativet

Villkor i IN (...)

Databaser & SQLur Databashanterare & SQL

5 svar · 536 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Hej!

Jag har följande kod:

SELECT * FROM tblCustomer WHERE [Nr] IN ( SELECT CustomerNr FROM tblTask WHERE PlanStartDate < GetDate()-730 ) AND Custom3 = '1 Privatkund'

Tanken är att den ska lista alla kunder som inte har uppdrag på sig de senaste två åren.

Problemet är dock:

Om en kund har två uppdrag, säg 2006-01-01 och 2007-05-08 så vill jag ju inte få träff på den kunden eftersom det senaste uppdraget gjordes utanför villkoret. Men, ovanstående SELECT listar ju kunden eftersom ett av uppdragen är gjort utanför tvåårsgränsen...

Hur kan jag göra för att få träff endast om det senaste uppdraget är är gjort längre tillbaks i tiden än 2 år?

Jag måste skriva det enligt:

SELECT * FROM tblCustomer WHERE ...

Mvh
Henrik

Medlem sedan dec. 20025 483 inlägg
#2
SELECT * FROM tblTask t WHERE NOT EXISTS ( SELECT * FROM tblTask WHERE PlanStartDate >= GetDate()-730 ) AND nr = t.nr)
Medlem sedan jan. 20013 582 inlägg
#3

:)

Problemet är att jag måste använda:

SELECT * FROM tblCustomer WHERE ...

Det måste skrivas så, jag kan inte lägga till några alias just där... :(

Mvh
Henrik

Medlem sedan dec. 20025 483 inlägg
#4
SELECT * FROM tblTask WHERE [Nr] NOT IN ( SELECT CustomerNr FROM tblTask WHERE PlanStartDate >= GetDate()-730 ) AND Custom3 = '1 Privatkund' )
Medlem sedan jan. 20013 582 inlägg
#5

Hej!

Jag var nog trött igår...

SELECT * FROM tblCustomer WHERE ...

Måste det börja med.. :-)

mvh
H

Medlem sedan jan. 20013 582 inlägg
#6

Thanx! :-)

130 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)