J'essaie d'exécuter une requête dans T-SQL pour extraire un ensemble de données basé sur une colonne null.IS NULL étant ignoré
Ceci est une version simplifiée du code:
SELECT
T1.Col1, T1.Col2,
T1.Col3, T1.Col4
FROM
table1 AS T1
INNER JOIN
table2 AS T2 ON T1.Col2 = T2.Col3
WHERE
T2.Col4 IS NULL
Le problème est, le résultat comprend les lignes où T2.Col4 sont NULL et pas non NULL, il est comme la clause WHERE n'existe pas.
Toutes les idées seraient grandement
MISE À JOUR - version complète du code:
SELECT
M.ref
,C.cname
,CL.clname
,C.ccity
,M.productLine
,M.code
,CL.date
,M.dept
,DPT.group
,TK2.tkname
,TK2.tkdept
FROM DB.dbo.manage AS M
OUTER JOIN DB.dbo.ClientManageRelationship AS CMR
ON CMR.RelatedEntityID = M.EntityID
OUTER JOIN DB.dbo.Client AS C
ON C.EntityID = CMR.EntityID
INNER JOIN DB.dbo.ManageCustomerRelationship AS MCR
ON MCR.EntityID = M.EntityID
INNER JOIN DB.dbo.Customer AS CL
ON CL.EntityID = MCR.RelatedID
INNER JOIN DB.dbo.timek AS TK
ON TK.tki = M.tkid
LEFT JOIN (SELECT Group = division, [Department] = newdesc, deptcode FROM DB.csrt.vw_rep_p_l_dept) AS DPT
ON tkdept = DPT.dept
LEFT JOIN (SELECT Name = TK2.tkfirst + ' ' + TK2.tklast, TK2.tki, TK2.dept, TK2.loc FROM DB.dbo.timek as TK2 WITH(NOLOCK)) AS TK2
ON TK2.tki = M.tkid
WHERE DPT.Department = 'Casualty'
AND UPPER (C.ClientName) LIKE '%LIMITED%'
AND CL.date > '31/12/2014'
AND CL.Date IS NULL
AND TK.tkloc = 'loc1' OR TK.tkloc = 'loc2'
ORDER BY M.ref
Etes-vous sûr? Pouvez-vous ajouter T2.Col4 à vos données de sélection et de publication et à la sortie (au format tabulaire de texte)? – etsa
Lorsque vous exécutez la requête sans l'où, obtenez-vous NULLS? –
Désolé, j'aurais dû être plus clair. T2Col4 est également sélectionné pour que je puisse voir le résultat. J'ai retiré la clause where, je récupère NULLS et NOT NULLS, mais j'obtiens un ensemble de résultats plus grand sans la clause WHERE. En outre, il y a plus de jointures que dans mon exemple de code, je ne sais pas si cela fait une différence? – mark