1
我已經看過幾個關於這個問題的答案,但由於我並不真的接近業餘DBA,他們有點超過我的頭。談論cte和一些我以前從未見過的功能。我想知道是否有一個更簡單的解決方案,我試圖找到。這裏是我的查詢:我如何使這個查詢返回審計表(MSSQL 2008)的最新記錄
SELECT DISTINCT systudent.lastname,
systudent.firstname,
...
systatchange.effectivedate AS StatusChangeDate
FROM systudent
INNER JOIN systatchange
ON systudent.systudentid = systatchange.systudentid
INNER JOIN syschoolstatus
ON systudent.syschoolstatusid = syschoolstatus.syschoolstatusid
INNER JOIN amleadsrc
ON systudent.amleadsrcid = amleadsrc.amleadsrcid
INNER JOIN amleadtype
ON systudent.amleadtypeid = amleadtype.amleadtypeid
INNER JOIN sycountry
ON systudent.sycountryid = sycountry.sycountryid
INNER JOIN adprogram
ON systudent.adprogramid = adprogram.adprogramid
WHERE systatchange.effectivedate >= Dateadd(day, -7, Getdate())
AND systatchange.newsyschoolstatusid = 1 --Lead
AND syschoolstatus.descrip NOT IN (
'56-Future Graduate', '92-Application Denied')
AND amleadtype.code <= 'HS2014'
ORDER BY leaddate DESC
我現在找的誰最近兩週內有一個狀態更改爲「1」(SyStatChange.NewSySchoolStatusID)的人的信息。
我遇到的問題是,對於某些用戶,狀態更改審計表顯示重複記錄。他們都有正確的狀態改變字段,但生效日期是毫秒到幾分鐘,所以我得到了愚蠢。所以對於用戶1 2和3,我只想要每個用戶的最新記錄。
什麼是最簡單的方法只獲取最新日期變化的記錄上的SyStatChange信息?
老兄,謝謝!奇蹟般有效。我在我的列表中添加PARTITION和CTE以進行更多研究。另外,我來回擺弄桌子別名。對於這個特定的查詢,它是在一個巨大的第三方數據庫上,所以完整的表名可以幫助我跟蹤究竟在哪裏提取數據。在我創建和維護的數據庫上,我通常使用別名。再次感謝! – ledgeJumper