我想寫一個查詢,以獲得與最新的日期,聯繫人姓名。 我有了不止一個結果爲每個聯繫人,但不同的日期表,我試圖讓該聯繫人的最新成果。只選擇行日期最新的
0
A
回答
0
試試這個:
SELECT *
FROM contacts c1
WHERE NOT EXISTS(
SELECT 'NEXT'
FROM contacts c2
WHERE c1.fk_parent = c2.fk_parent
AND c2.date > c1.date)
對於接下來的時間,添加表(與現場和關係)。
我的樣品是非常通用的,因爲我不知道你的結構
fk_parent,我認爲,是代表一個外鍵,其中,兩個不同的觸點鏈接(例如該字段可以是客戶現場場)
5
使用ranking functionROW_NUMBER()
與PARTITION BY
和ORDER BY Date DESC
:
WITH CTE
AS
(
SELECT *,
ROW_NUMBER() OVER(PARTITION BY contactId
ORDER BY date DESC) AS RN
FROM tablename
)
SELECT *
FROM CTE
WHERE RN = 1;
這會給你只能爲每個聯繫人的最新日期的行。
0
而且,像...
select id, contactname from contacts c1
where contactdate = (select max(contactdate) from contacts c2 where c2.id=c1.id)
0
的下面創建一個每個觸點最大日臨時表。加入這個臨時表到你的基表會讓你找到你想要的結果。
create table #latestContact (lastdate datetime ,contactid int);
insert into #latestContact (lastdate, contactid)
select max(createdate)
,contactid
from ContactTable
group by contactid;
select *
from contactTable c
join #latestContact l
on l.lastdate = c.createdate
and l.contactid = c.contactid;
我注意確保你的表結構是什麼樣子,但我相信你的聯繫表中有一個主鍵(接觸),並且還使用了創建日期時間字段(CREATEDATE)。
這可能比CTE排名上面,因爲它不會選擇不需要的行,然後篩選出來的最終結果集的例子更好。但是,我沒有看過查詢計劃或任何一個解決方案的統計 - 這將是看看有什麼效果最好的一個好辦法。
希望這會有所幫助。
相關問題
- 1. 選擇最新日期的行
- 2. 如何只選擇1行最新的日期
- 3. Reactjs - 最新日期選擇
- 4. 選擇最新日期
- 5. 只選擇最早的日期(BigQuery)
- 6. MySQL的選擇日期最新
- 7. 選擇基於最新日期的值
- 8. cxGrid選擇了最新的日期
- 9. 如何只能選擇其中日期時間是最新的
- 10. SQL選擇最近日期的行
- 11. 選擇具有最短日期的行
- 12. 選擇限於最近日期的行
- 13. 選擇多行最常用的日期
- 14. SQL服務器 - 只有選擇最新日期
- 15. MS Access查詢只選擇最新日期
- 16. MySQL選擇最新日期 - 單表
- 17. Oracle按日期選擇最新值
- 18. 根據日期選擇最新記錄
- 19. SQL CE - 選擇最新日期
- 20. 選擇最近的日期
- 21. 選擇最早的日期
- 22. 選擇最多的日期
- 23. 選擇最近的日期
- 24. 選擇最近的日期
- 25. jQuery的日期選擇器和新行
- 26. 設置在日期選擇器中選擇的最短日期
- 27. 按日期選擇行和排除行已最新記錄
- 28. wijmo日期選擇器最大日期
- 29. 選擇最大日期和日期前
- 30. 選擇多行最大日期
看看這個問題:http://stackoverflow.com/questions/18362338/sql-server-max-function/18362443?noredirect=1#comment26986890_18362443 – JsonStatham