業務規則:我們只能爲每90天的跟進事件收費。任何發生在前一個事件發生後不到90天的事件都不能收費,但需要記錄。SQL頂部和加入
用戶要求:他們希望看到他們提交當前事件賬單的標籤上提交的最後一個事件賬單的日期,以提供提交賬單是否值得做的視覺提示。
事件在表事件中有一個event_id和一個event_date。 Event_id是表event_bill中的外鍵,它具有賬單的submitted_date。 對於每個客戶,事件都有一個外鍵customer_id,因此客戶可以在任何時間段都有多個事件。
鑑於目前的event_id和customer_id,我正在嘗試獲取最近一次上一個事件的submitted_date。
這是我已經試過:
SELECT TOP 1 (event_id) as prev_event_id
INTO #tmp
FROM event
WHERE customer_id = @custID
AND event_type = 'Followup'
AND event_id < @eventID
ORDER BY event_date DESC
SELECT eb.submitted_date
FROM event_bill eb
JOIN #tmp
ON eb.event_id = #tmp.prev_event_id
DROP TABLE #tmp
這將是一切都很好,但我的應用程序的數據庫權限不允許創建臨時表的。
在沒有臨時表的嘗試中,出現錯誤,我無法在派生表中使用ORDER BY,但我需要確保在此客戶的當前一個之前獲得最後一個事件:
SELECT eb.submitted_date
FROM event_bill eb
JOIN
(
SELECT TOP 1 (event_id) as prev_event_id
FROM event
WHERE customer_id = @custID
AND event_type = 'Followup'
AND event_id < @eventID
ORDER BY event_date DESC
) x
ON eb.event_id = x.prev_event_id
任何人都可以給我一個更好的方法來解決這個問題嗎?
非常感謝您的幫助!現在我明白了這一點,更有意義的是,我不得不重新加入事件表。 –
我很高興我可以幫你:) – Parado