Je vais avoir du mal à comprendre les éléments suivants OU clause dans T-SQL (SQL Server 2000/2005) requête:Que signifie cette clause SQL WHERE?
update #tempTable
SET
Total_Avg=isnull(TerminationReason,'terminated'),
Individual_Subscriptions=null,
Business_Subscriptions=null,
Other_subscriptions=null,
-- snip. 10 more fields set to NULL.
PMIE_BI=null,
Digital_Editions_BI=null
where
(
AbcTerminationDate<=dbo.fnGetPeriodFinalDate(@periodid)
and (AbcTerminationDate!=19000101 or AbcTerminationDate is null)
and (Total_Avg is not NULL or PrevTotalAvg is not NULL)
)
Plus précisément, la deuxième clause n'a pas de sens pour moi - c'est 2 sous-clauses séparées par l'opérateur ou semblent contradictoires.
Le AbcTerminationDate champ est déclaré comme INT NULL dans une table appelée Membres. Je crois qu'une date de dans le système signifie NULL ou une valeur par défaut ou aucune valeur, c'est-à-dire qu'un membre est et non terminé. La requête semble donc masquer un grand nombre de champs/chiffres si un membre est marqué comme terminé, ce qui correspond à AbcTerminationDate est NULL ou a la valeur par défaut.
Sans en savoir plus, qu'en faites-vous?
Exactement ce que je pensais. J'espérais que quelqu'un d'autre aurait pris ça aussi .. –
http://en.wikipedia.org/wiki/De_Morgan%27s_laws est ce que je pensais. Mais ils ont réussi à tout rafistoler, mais d'une manière ou d'une autre, cela fonctionnait toujours à cause d'une logique étrange, et échouait seulement dans certains cas. –