我需要一個新的眼睛在這個查詢。在這段代碼中沒有深入研究,我的問題是我正在做一個左連接,從TXP_Digital_Signatures(tds)表中將簽名存儲到最新版本的治療計劃(txp_master txp)中。這段代碼正在做的是帶回tds.signed爲空(無簽名)或標記爲N(否)的結果。這是有效的,但是這個報告所做的就是向人們展示No需要成爲的是什麼,但是這就讓No留下了,所以如果有更近的Yes,那麼在該版本的tds.plan_id中No仍然是將plan_id拉到最近簽名狀態爲Y(是)等情況下我不再需要的地方。下面的代碼片段被添加到where語句中,但是它隱藏了所有No,即使沒有更新的Y(是)。在左側加入使用相關子查詢
tds.date = (select Max(date) from TXP_Digital_Signatures where tds.plan_id = txp.plan_id)
誰能想到了一個辦法,無論是相關子查詢添加到左側加入,所以只拉每個tds.plan_id或如何最大(tds.date)返工我,語句所以沒有的沒有更新的是,null仍顯示出來。我真的不想重複整個報告作爲一個分組報告,如果我能幫到它,我覺得它會打破我的一大堆東西,基本上讓我從頭開始重做這份報告。
(select Max(date) from TXP_Digital_Signatures x where x.plan_id = tds.plan_id)
目前,你是不是過濾子查詢TXP_Digital_Signatures
:如果您更正子查詢,像這樣的SQL 2008 R2
SELECT case_status,
CONVERT(CHAR(10), episode_open_date, 101)AS 'Enrolled' ,
txp.patient_id,
p.lname+', ' + p.fname AS 'Client',
CONVERT(CHAR(10), txp.effective_date, 101)AS 'Effective',
CONVERT(CHAR(10), next_review_date, 101)AS 'Review',
txp.signed,
(SELECT location_code FROM staff s WHERE s.staff_id = txp_coordinator_id) AS 'Clinic',
(SELECT s.lname+', ' +s.fname FROM staff s WHERE s.staff_id = txp_coordinator_id) AS 'Coordinator',
(SELECT s.lname+', ' +s.fname FROM staff s WHERE s.staff_id = ts.team_member_id) AS 'Team',
ts.signed,
tds.signed as 'Patient Sig'
FROM txp_master txp join patient p ON p.patient_id = txp.patient_id and p.episode_id = txp.episode_id
join txp_signature ts on ts.plan_id = txp.plan_id and ts.version_no = txp.version_no and ts.team_member_id <> txp.txp_coordinator_id
left join TXP_Digital_Signatures tds on tds.plan_id = txp.plan_id
where p.case_status = 'A' and
txp.status <> 'er' and patient_signed_date is null
and tds.signed is null or tds.signed = 'N'
and txp.effective_date > '2016-12-31 00:00:00.000'
and tds.date = (select Max(date) from TXP_Digital_Signatures where tds.plan_id = txp.plan_id)
order by patient_id
結果謝謝你的回覆。我有點困惑。我在哪裏把子查詢?只是在選擇?這顯示了最大日期是什麼,但是在結果中不隱藏N個結果。我也對你希望我如何切換我的聯接有點困惑。無論TXP_Digital_signatures如何,我都希望得到結果,我需要沒有簽名的空結果,但不完全確定要從描述中改變什麼。謝謝你,對不起我是代碼noob。 –
建議您的代碼的最後一行看起來應該像這樣。你發佈的代碼的問題是'tds'不是指該子查詢中的TDS實例,而是查詢主體中的TDS實例。它需要它自己的別名。 –
任何引用tds(除'tds.field = NULL')的'WHERE'子句都會過濾掉沒有TDS記錄的情況。如果你不想這樣做,你需要將這些行移動到相關'JOIN'的'ON'子句中。 –