日志表的表結構
| ID | 參考編號 | 服務名稱 | 型別 | 資料 | 創建于 |
|---|---|---|---|---|---|
| 504 | 7cb54c325450b4bc26 | CC_VERIFY_REGISTRATION | 0 | {{response_data}} | 2020-09-14 07:53:42 |
| 505 | 7cb54c325450b4bc26 | CC_VERIFY_REGISTRATION | 0 | {{response_data}} | 2020-09-15 17:13:09 |
| 506 | 7cb54c325450b4bc26 | MOBILE_VERIFY | 0 | {{response_data}} | 2020-09-20 7:53:42 |
這是樣本資料。使用此參考 ID,注冊了許多服務日志。CC_VERFIY_REGISTRATION 服務失敗,因此 2 個條目作為一個表示最新條目。如何確定特定reference_id的任何 API 的上次重試時間
select created_on
,service_name
from thirdparty_service_logs tsl
where reference_id ='7cb54c325450b4bc26'
group by service_name ,created_on
這為每個服務提供了最新的 created_on。但是為 reference_id 尋找最新的 created_on 。在這種情況下,雖然最新的 api 呼叫是針對 MOBILE_VERIFY,但我正在尋找 id 505 的created_date 列 作為輸出
uj5u.com熱心網友回復:
您可以找到 reference_id 的最后一條記錄,如下所示:
declare @table table(id int, reference_id varchar(50), service_name varchar(50), type int, data varchar(50), created_on datetime)
INSERT INTO @Table values
(504 ,'7cb54c325450b4bc26','CC_VERIFY_REGISTRATION', 0 ,'{{response_data}}','2020-09-14T07:53:42'),
(505 ,'7cb54c325450b4bc26','CC_VERIFY_REGISTRATION', 0 ,'{{response_data}}','2020-09-15T17:13:09'),
(506 ,'7cb54c325450b4bc26','MOBILE_VERIFY', 0 ,'{{response_data}}','2020-09-20T07:53:42');
SELECT top 1 * FROM @table as ot where reference_id = '7cb54c325450b4bc26'
and created_on < (SELECT max(created_on) from @table as it where it.reference_id = ot.reference_id)
order by created_on desc
| ID | 參考編號 | 服務名稱 | 型別 | 資料 | 創建于 |
|---|---|---|---|---|---|
| 505 | 7cb54c325450b4bc26 | CC_VERIFY_REGISTRATION | 0 | {{response_data}} | 2020-09-15 17:13:09.000 |
uj5u.com熱心網友回復:
您可以根據您的重試標準使用CTE預取reference_id和相應的max(created_on),然后使用它來獲取目標行。
With CTE As (
Select reference_id, Max(created_on) As Lst
From thirdparty_service_logs
Group by reference_id
Having Count(*)>1)
Select *
From thirdparty_service_logs As t
Where Exists (Select * From CTE Where reference_id=t.reference_id And lst=t.created_on)
Order by reference_id
資料庫<>小提琴
結果:
| ID | 參考編號 | 服務名稱 | 型別 | 資料 | 創建于 |
|---|---|---|---|---|---|
| 506 | 7cb54c325450b4bc26 | MOBILE_VERIFY | 0 | {{response_data}} | 2020-09-20 07:53:42.000 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/399921.html
標籤:sql sql-server
上一篇:未使用“洗掉表”洗掉的本地臨時表
下一篇:T-SQL遞回更新
