不明道名的道歉。SQL Server - 多個事務ID - 如果包含 - 只選擇最近
我正在嘗試在SQL中創建時間驗證報告,但遇到了問題。
我面臨的問題是,有時員工提交時間後,支持人員會進行更改,區分這些問題的唯一方法是通過交易ID進行區分。例如,如果John Doe提交了他的時間卡,他在表中的交易ID將是1234,但是如果對該條目進行了更改,則表中的交易ID將是1234-00,然後是1234-01,然後是1234-02等等爲每個變化。我想要做的是改變我的SQL查詢,以便如果事務ID包含 - 它只選擇最新的條目。
見下面的代碼示例:
SELECT
jb_id AS JobID,
MAX(jb_nme) AS JobName,
MAX(emplye_nme_frst) + ' ' + MAX(emplye_nme_lst) AS FullName,
jchstry_dte_effctve AS EffectiveDate,
jchstry_hrs,
pytype_id PayType,
jbcstctgry_id,
jbcstctgry_dscrptn,
jchstry_srce_trnsctn_id
FROM jb
JOIN jbbllngitm
ON jbbllngitm.jb_rn = jb.jb_rn
JOIN jbcstcde
ON jbcstcde.jb_rn = jb.jb_rn
JOIN jchstry
ON jbcstcde.jbcstcde_rn = jchstry.jbcstcde_rn
JOIN pytype
ON pytype.pytype_rn = jchstry.pytype_rn
JOIN jbcstctgry
ON jbcstctgry.jbcstctgry_rn = jchstry.jbcstctgry_rn
JOIN emplye
ON jchstry_rfrnce_rn = emplye.emplye_rn
WHERE jb_id = '1234'
AND jchstry_dte_effctve BETWEEN 'XXXX-04-01' AND 'XXXX-04-04'
GROUP BY jbcstcde_nme,
jb.jb_rn,
jchstry.jchstry_dte_effctve,
jb.jb_id,
pytype.pytype_id,
jbcstctgry.jbcstctgry_id,
jbcstctgry.jbcstctgry_dscrptn,
jchstry.jchstry_hrs,
jchstry.jchstry_srce_trnsctn_id
樣本數據集
JobID JobName FullName EffectiveDate Hours PayType Source Transaction ID
1234 XXXX John Doe 4/1/XXXX 0.25 Straight Time 5678
1234 XXXX John Doe 4/1/XXXX 8 Straight Time 5678-01
1234 XXXX John Doe 4/4/XXXX 8 Straight Time 4567
例如,在上表中,因爲有兩個交易編號爲5678我只是想選擇包含交易ID -01。如果結果具有事務ID 5678-01,5678-02和5678-03,我只希望查詢返回5678-03所在行。
請讓我知道,如果有什麼不清楚。這比我預料的更難解釋。
把'01'放在一個新列中,並通過事務ID查詢該列和組的最大值? – dfundako
但有些條目根本沒有任何-01,-02的值。 4567交易ID是正確的,沒有任何更改。 –
是否有日期時間戳記列記錄每次更改後的時間戳記?以及您正在使用哪個版本的SQL-Server? – objectNotFound