表記錄如何在SQL查詢陳述句,如何只選擇客戶的最后一條記錄呢?
比如:
客戶 金額 日期
張三 500 2020-11-11
李四 850 2020-11-08
張三 1180 2020-11-01
李四 580 2020-10-31
……
查詢的結果只顯示每個客戶的最后一條更新日期的記錄?比如只顯示張三 2020-11-11 金額500這個記錄?李四只顯示2020-11-08 金額850的記錄?
uj5u.com熱心網友回復:
按 SQLServer 語法如下,其他資料庫類似:Select a.* From 表 as a
Inner join (Select 客戶, Max(日期) as 最大日期 From 表 GroupBy 客戶) as b
on a.客戶 = b.客戶 and a.日期 = b.最大日期
注意:如果客戶、日期有重復記錄,結果可能有多條(m * n 條),所以最好用唯一主鍵欄位做關聯。
uj5u.com熱心網友回復:
create table #t
(
客戶 varchar(10),
金額 money,
日期 datetime
)
insert into #t
select '張三',500,'2020-11-11' union all
select '李四',850,'2020-11-08' union all
select '張三',1180,'2020-11-01' union all
select '李四',580,'2020-10-31'
select * from #t
SELECT 客戶,金額,日期 FROM
(SELECT 客戶,金額,日期,ROW_NUMBER()OVER(PARTITION BY 客戶 ORDER BY 日期 DESC) AS XH from #t) tt WHERE XH=1
uj5u.com熱心網友回復:
忘記說了,是sqliteuj5u.com熱心網友回復:
這個還是把所有記錄查詢出來了,如何只保留每一個客戶更新日期最新的那條記錄呢?
uj5u.com熱心網友回復:
SELECT * FROM 表 a
INNER JOIN (
SELECT 客戶,max(日期) 日期 FROM 表 GROUP BY 客戶 )b
ON a.日期=b.日期
uj5u.com熱心網友回復:
可以了,已解決,方法在這里:https://blog.csdn.net/bushizhuanjia/article/details/6854208
uj5u.com熱心網友回復:
這塊總體叫開窗函式sqllite在3.25版本以后就已經支持
官方說明:
https://www.sqlite.org/windowfunctions.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/225747.html
標籤:C#
上一篇:web 資料庫
