在此SQL中,它只返回连接表 (subst_Instructions)的col中有数据的行。但是,即使连接中没有数据,我们也希望它显示主表中的行。现在,它的'因为SUBST_INSTRUCTIONS不是空的。 但没有,它不会显示该列的数据。有什么方法可以说SUBST_INSTRUCTIONS不是null和null?sql查询只显示在连接中有匹配的行
SELECT * FROM
(
SELECT ID_KEY, [BATCH] AS column1, [IMPORTDATE], [DATEBILLED], [RX],
[DATEDISPENSED], [DAYSUPPLY], [PAYTYPE], [NPI],
[PHYSICIAN], [COST], [QUANTITY], [MEDICATION], A.[NDC], [PATIENTNAME],
[ROUTEOFADMIN], [INVOICECAT], [COPAY], [BRAND], [TIER], [SKILLLEVEL],
[STAT] STATUS, [LASTTASKDATE],SEQNO,B.[SUBST_INSTRUCTIONS],
ROW_NUMBER() OVER(PARTITION BY ID_KEY ORDER BY ID_KEY) rn
FROM [PBM].[T_CHARGES] A
LEFT OUTER JOIN [OGEN].[NDC_M_FORMULARY] B
ON A.[NDC] = B.[NDC]
WHERE [STAT] NOT IN (3, 4)
AND [TIER] <> 'T1'
) a
WHERE SUBST_INSTRUCTIONS IS NOT NULL -- rn = 1
什么是外部选择?当您直接应用WHERE SUBST_INSTRUCTIONS不为NULL时,结果应该是相同的。 (顺便说一句:SUBST_INSTRUCTIONS是表PBM的一个领域,对吗?在每个领域都有一个限定符A或B会很有帮助。) –
嗨亚当斯,不知何故,你混淆了事物。以任何方式,你不需要WHERE SUBST_INSTRUCTIONS不是NULL。要么显示PBM的所有记录,并显示BST_INSTRUCTIONS(如果有),请使用外部联接。或者您只想显示具有BST_INSTRUCTIONS的PBM记录,然后使用内部联接。子句WHERE SUBST_INSTRUCTIONS不是NULL只会有效地使你的外连接成为一个内连接。 –
我明白了,但这是它工作的唯一途径。如果我删除最后一部分,那么我们只是得到愚蠢。 – Adams