Fråga : VERKSTÄLLA SQL: SAMMANSMÄLTA FUNGERAR - DATERA SPÄNNER, OCH OGILTIGT VÄRDERAR

Förmiddag I using verkställer SQL för att bearbeta en serie av möjlighetvalet filtrerar från, genom att kalla applikation i VB6.  Om ingenting är utvalt för given, sätta in i den kallande appen, då jag önskar inte att filtrera på det sätter in.  SAMMANSMÄLTA fungerar arbeten väl för denna och är funktionsduglig på alla, men datera spänner.  Alla möjlighet sätter in i databasen endera innehåller en värdera, eller ett OGILTIGT värderar.   Förmiddagen för problem som I den har, är med datera spänner.  Om jag passerar i en spänna av daterar, den ska filtrerar på det spänner och, retur, endast som de rekord spänner däri.  Om jag passerar i ingenting (inget filtrera önskat), I-uppsättningen som datera spänner variabler till OGILTIGT (som jag gör för annan sätter in), och, skulle förvänta att alla rekord som ska gås tillbaka huruvida det har en datera eller ett OGILTIGT.  I stället det går alla rekord med några tillbaka daterar värderar i sätta in - det uteslutar daterarekorden med en värdera av OGILTIGT i databasen.  Överenskommelse för förmiddag I inte, varför den fungerar, som förväntat med detta att närma sig för det annat valet sätter in, yet inte för datera.  Min query är nedanför.  Med dess strömvariabelinställningar som jag skulle, förvänta den för att gå ALL records.

tillbaka--Applicera filtrerar, som behövt baserat värderar på passerat in från att kalla application.
--Bruk SAMMANSMÄLTER fungerar: Om inget värdera passeras in, den fastställda variabeln till OGILTIGT och SAMMANSMÄLTER därefter ska för att inte applicera en filter.
--detta fungerar fint och att filtrera som nödvändigt eller gå alla rekord tillbaka, som behövt (huruvida eller inte det finns ett non-NULL värderar i sätta in), bortsett från DATERA sätter in hänvisad till here

--För datera spänner, om jag passerar i en spänna som det fungerar korrekt och filtrerar spänner på, men, om I-UPPSÄTTNINGEN daterar, spänna variabler till OGILTIGT (som jag gör de andra variablerna), för att inte filtrera på sätta in, it
--rekord för retur endast med en datera värderar i sätta in.  Den går inte rekorden med ett OGILTIGT för @TERRITORYRÖDINGEN för value.

DECLARE för DATETIME
SET för @DATEBEGIN för @STATE=NULL
DECLARE för
SET för @STATE VARCHAR för @TERRITORY=NULL
DECLARE för
SET (5) (10) för DATETIME
SET för @DATEEND @DATEBEGIN=NULL
DECLARE FÖRETAG @DATEEND=NULL

SELECT, ATT TILLTALA, STADEN som ÄR STATLIG, ZIPCODEN, TERRITORIET, FOLLOWUPDATE
FROM LEADS
WHERE
TERRITORY =, SAMMANSMÄLTER (@TERRITORY, TERRITORIET) AND
STATE = SAMMANSMÄLTER (@STATE, PÅSTÅR), AND
FOLLOWUPDATE BETWEEN SAMMANSMÄLTER (@DATEBEGIN, FOLLOWUPDATE) OCH SAMMANSMÄLTER (@DATEEND, FOLLOWUPDATE)

" klar "

Svar : VERKSTÄLLA SQL: SAMMANSMÄLTA FUNGERAR - DATERA SPÄNNER, OCH OGILTIGT VÄRDERAR

Du kan precis behov att ändra detta

FOLLOWUPDATE BETWEEN SAMMANSMÄLTER (@DATEBEGIN, FOLLOWUPDATE) OCH SAMMANSMÄLTER (@DATEEND, FOLLOWUPDATE)

till

(FOLLOWUPDATE->=@DATEBEGIN ELLER @DATEBEGIN ÄR OGILTIG) OCH (FOLLOWUPDATE <>
Andra lösningar  
 
programming4us programming4us