我有兩個表th_Therapy_Note
和th_Approved
。當th_Therapy_Note
中的筆記獲得批准時,應用程序將向th_Approved
插入一條記錄。如何從表中選擇多行存在的單行
由於以下幾個原因,筆記可能會被拒絕(不要問我爲什麼,因爲我沒有設計這個程序,哈哈)。因此,如果一張紙幣被批准後被拒絕,則插入另一個條目th_Approved
。
th_Approved.th_approved_isApproved
是一個布爾(位)列,因此視狀態,在真或假
那麼多行的同一個音符此列在這個表中的音符輸入可以th_Approved
可能存在不同th_Approved.th_approved_isApproved
狀態,最後一個條目是最近的條目並且是正確的狀態
以下查詢的主要目的是選擇準備好被「定案」的備註。以下查詢的問題在最後一個inner join
過濾器'AND th_Approved.th_approved_isApproved = 1
'這是選擇有效批准的備註,這意味着它們應該在th_Approved
和th_Approved.th_approved_isApproved
中有條目。
這適用於th_Approved
中單條目的筆記,但th_Approved
(如上所述)中有多個條目的筆記表示如果該特定筆記的最後一項爲假,則表示此問題。該查詢仍會提取它,因爲至少有一個條目th_Approved.th_approved_isApproved
爲真,即使上次的正確狀態爲假時也是如此。我只需要查看最後一個條目即可確定筆記的正確狀態,並根據狀態選擇或不選。
查詢的最後部分(and th_Therapy_Note.th_note_id=16239
)僅供我測試,因爲本筆記有多個條目,但最終不會有這個。
我該如何解決我的問題?我一直在尋找,沒有運氣幾種策略.....希望我是有道理的:)謝謝
SELECT Distinct Convert(varchar,th_Therapy_Note.th_note_id) as NOTEID, '054' as PROGCODE, Rtrim(ch.child_caseNumber) as CASEID,
Case th_TherapyType.shortname when 'ST' then 'SP' else rtrim(th_TherapyType.shortname) end as SERVTYPE, Convert(varchar,th_Therapy_Note.th_note_dateofservice,101) as DELSERVDATE,
Cast(((Select sum(th_TherapyServiceProvided.units) From th_TherapyServiceProvided where th_DirectServices.th_ds_id = th_TherapyServiceProvided.th_ds_id)/60) as varchar) as SERVHRS,
Cast(((Select sum(th_TherapyServiceProvided.units) From th_TherapyServiceProvided where th_DirectServices.th_ds_id = th_TherapyServiceProvided.th_ds_id)%60) as varchar) as SERVMIN,
'1' as METHOD, isnull(th_Users.trad_id, ' ') as SPROVNUM, th_Users.th_user_lname, '' as COVISIT
FROM th_Therapy_Note INNER JOIN
child_tbl AS ch ON th_Therapy_Note.child_id = ch.child_recordId INNER JOIN
th_DirectServices ON th_Therapy_Note.th_note_id = th_DirectServices.th_note_id INNER JOIN
LookUp_contactType ON th_Therapy_Note.contact_type_id = LookUp_contactType.recId INNER JOIN
th_Users ON th_Therapy_Note.service_coordinator = th_Users.th_user_email INNER JOIN
th_TherapyType ON th_Therapy_Note.therapy_type = th_TherapyType.id INNER JOIN
th_Approved ON th_Therapy_Note.th_note_id = th_Approved.th_note_id AND th_Approved.th_approved_isApproved = 1
WHERE (ch.child_recordId =
(SELECT MAX(child_recordId) AS Expr1
FROM child_tbl
WHERE (child_caseNumber = ch.child_caseNumber)))
and th_Therapy_Note.th_note_dateofservice > '4/22/2014' and th_Therapy_Note.th_note_id=16239
你不應該把那isApproved條件的JOIN ON子句中,但在哪裏。在JOIN中,您必須找到識別最後一條記錄的方法。什麼區別th_Approved行?一個約會?順序ID? – Frazz
順序標識符'th_approved_id'並且它們還有日期時間標籤'th_approved_timestamp' – esausilva
順序標識符是完美的。 – Frazz