我有下表:
Group RecDate oData
---------------------------------------
123 2022-03-20 02:00:00 F1xR
123 2022-03-21 02:30:00 F1xF
123 2022-03-22 05:00:00 F1xN
123 2022-03-15 04:00:00 F2xR
從上表中,我想從欄位中獲取MAX日期group by2 字符。oData然后我寫了一個這樣的查詢:
SELECT a.Group, MAX(a.RecDate) RecDate, LEFT(a.oData, 2) oDataNo
INTO #t1
FROM TableData a
GROUP BY a.Group, LEFT(a.oData, 2)
SELECT * FROM #t1
那么,結果應該是:
Group RecDate oDataNo
--------------------------------------------
123 2022-03-22 05:00:00 F1
123 2022-03-15 04:00:00 F2
從上面 ( #t1) 的結果中,我想加入 以從欄位TableData中獲取RIGHT字符(1 位) 。oData所以我INNER JOIN與#t1. TableDataJOIN 欄位是RecDate. 但奇怪的是結果不是我想要的。
像這樣的查詢:
SELECT RIGHT(a.oData,1) oDataStat, b.*
FROM TableData a
INNER JOIN #t1 b ON a.RecDate = b.RecDate
錯誤的結果如:

結果應該是:
Group RecDate oDataNo oDataStat
-----------------------------------------------------------
123 2022-03-22 05:00:00 F1 N
123 2022-03-15 04:00:00 F2 R
我做錯了嗎?
請指教。非常感謝。
謝謝你。
uj5u.com熱心網友回復:
您提供的查詢回傳您想要的資料。但是,在單個查詢中執行此操作更簡潔,例如
WITH cte AS (
SELECT *
, RIGHT(a.oData,1) oDataStat
, ROW_NUMBER() OVER (PARTITION BY LEFT(a.oData, 2) ORDER BY RecDate DESC) rn
FROM TableData a
)
SELECT [Group], RecDate, oData, oDataStat
FROM cte
WHERE rn = 1
ORDER BY RecDate;
回傳:
| 團體 | 記錄日期 | o資料 | oDataStat |
|---|---|---|---|
| 123 | 2022-03-15 04:00:00 | F2xR | R |
| 123 | 2022-03-22 05:00:00 | F1xN | ? |
注意:由于沒有轉義,您發布的查詢實際上并未運行[Group]- 您應該確保您發布的所有內容都首先洗掉了任何錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/449518.html
