紫衣仙女
2019-11-02 14:24:37
我有一個查詢,使用兩個連接的LEFT OUTER JOIN從三個表中提取數(shù)據(jù)。我需要查詢以返回最左邊的(Salesrep表)信息,即使在兩個右邊的表(分別是處方藥和處方)中沒有對應(yīng)的數(shù)據(jù)也是如此。當(dāng)我在WHERE子句中沒有日期參數(shù)的情況下運行此查詢時,我得到了預(yù)期的回報,但是當(dāng)我包含日期參數(shù)時,在沒有任何銷售代表匹配數(shù)據(jù)的情況下,我什么也沒有得到返回。我至少需要查看查詢中請求的salesrep表列。這是查詢...非常感謝您的幫助。SELECT salesrep.salesrepid as SalesRepID, salesrep.fname as SalesrepFName, salesrep.lname as SalesRepLName, salesrep.fname+' '+salesrep.lname as SalesRepFullName, prescriber.dea_no as PDeaNo, prescriber.lname+', '+prescriber.fname as DocName, CONVERT(VARCHAR(8), prescriptions.filldate, 1) as FillDate, prescriptions.drugname as DrugName, prescriptions.daysupply as Supply, prescriptions.qtydisp as QtyDisp, prescriptions.rx_no as Refill, prescriptions.copay as Sample, ROUND(prescriptions.AgreedToPay-(prescriptions.AgreedToPay*.07),2) as AgreedToPay, prescriptions.carrierid as CarrierIDFROM salesrep LEFT OUTER JOIN prescriber on salesrep.salesrepid = prescriber.salesrepid LEFT OUTER JOIN prescriptions on prescriber.dea_no = prescriptions.dea_no WHERE salesrep.salesrepid = 143 AND prescriptions.filldate >= '09-01-12' AND prescriptions.filldate <= '09-17-12'ORDER BY prescriptions.filldate
3 回答

白衣染霜花
TA貢獻1796條經(jīng)驗 獲得超10個贊
您應(yīng)該將約束prescriptions.filldate移到連接ON條件中,并將其從where子句中刪除:
LEFT OUTER JOIN prescriptions ON prescriber.dea_no = prescriptions.dea_no
AND prescriptions.filldate >= '09-01-12'
AND prescriptions.filldate <= '09-17-12'
否則,沒有條目的prescriptions結(jié)尾以nulls 開頭prescriptions.filldate,該WHERE子句將其丟棄。

臨摹微笑
TA貢獻1982條經(jīng)驗 獲得超2個贊
這是因為您的prescriptions.filldate不等式正在過濾掉salesrep列中沒有值的prescriptions.filldate行。
因此,如果存在空值(右表中沒有匹配數(shù)據(jù)),則日期篩選器將濾除包括salesrep數(shù)據(jù)在內(nèi)的整個行-因為它們null不在兩個日期之間。
- 3 回答
- 0 關(guān)注
- 619 瀏覽
添加回答
舉報
0/150
提交
取消