什麼是最佳SELECT語句以獲得最大事件日期以實現下面提到的所需表?如何按最大日期進行分組,並使用非唯一字段
場景:一個訂單在其生命週期中可以有多個事件。如訂單已取消事件,放置擱置事件..等等。每個事件在備註表中記錄一個備註。
以下是活動&筆記表..我只想要最後記錄的事件和它的筆記。
表1:事件表
表2:表NOTES
所需的表
UPDATE:在願望表,我只想要得到的最大事件日期,併爲每個訂單的ID最大的事件,其中事件原因是「待定」的說明。因此將訂單將在所需的表的唯一標識符
什麼是最佳SELECT語句以獲得最大事件日期以實現下面提到的所需表?如何按最大日期進行分組,並使用非唯一字段
場景:一個訂單在其生命週期中可以有多個事件。如訂單已取消事件,放置擱置事件..等等。每個事件在備註表中記錄一個備註。
以下是活動&筆記表..我只想要最後記錄的事件和它的筆記。
表1:事件表
表2:表NOTES
所需的表
UPDATE:在願望表,我只想要得到的最大事件日期,併爲每個訂單的ID最大的事件,其中事件原因是「待定」的說明。因此將訂單將在所需的表的唯一標識符
;WITH cte As (
Select Notes.OrderId, Tmp.MaxDate, Notes.Note, ROW_NUMBER() OVER(PARTITION BY Notes.OrderId Order By Notes.Note) As rowNum
From
(Select EventId ,MAX(EventDate) As MaxDate
From EventTable
Where EventReason = 'OnHold'
Group By EventId) Tmp
Inner Join Notes On Tmp.EventId = Notes.EventId
)
Select OrderId, MaxDate, Note
From cte
Where RowNum = 1
感謝mhasan,但仍在獲取repid orderID。 – Lokapedia
現在檢查..我用cte爲每個訂單ID生成rownumbers並選擇一行 –
使用分區中:
SELECT
X.OrderId,
X.EventDate,
X.Note,
FROM
(
SELECT
N.OrderId,
E.EventDate,
N.Note,
ROW_NUMBER() OVER(Partition By N.OrderId Order By N.OrderId,N.NoteDate DESC) AS PartNo
FROM NOTES N
LEFT JOIN dbo.[EVENT] E ON E.EventId=N.EventId
WHERE N.EventId IS NOT NULL
AND N.Note like '%on hold%'
)X
WHERE X.PartNo=1
您可以使用下面的查詢,希望這將是對你有用。
SELECT NT.ODER_ID, MAX(EV.EVENT_DATE), NT.NOTE
FROM EVENT EV, NOTES NT WHERE
EV.EVENT_ID = NT.EVENT_ID
GROUP BY NT.ODER_ID, NT.NOTE
ORDER BY NT.ODER_ID;
任何問題讓我知道,會解決你。
目前尚不清楚您是如何達到您的理想輸出。 –
我想查看事件原因處於保留狀態的所有訂單ID以及最新事件。 – Lokapedia
這些信息應該是你問題的一部分,而不是附註。 –