Dav*_*ard 2 sql sql-server greatest-n-per-group
我正在尝试为每个 Finance_charge_id 的每个 service_user_id 选择最大日期记录以及与最高日期相关联的金额
select distinct
s.Finance_Charge_ID, MAX(s.start_date), s.Amount
from
Service_User_Finance_Charges s
where
s.Service_User_ID = '156'
group by
s.Finance_Charge_ID, s.Amount
Run Code Online (Sandbox Code Playgroud)
问题是我收到多个金额不同的条目。我只想收到每个 Finance_charge_id 的最近日期的金额
目前我收到以下不正确的信息(第三行不应出现,因为第一行的日期更高)
Finance_Charge_ID (No column name) Amount
2 2014-10-19 1.00
3 2014-10-16 500.00
2 2014-10-01 1000.00
Run Code Online (Sandbox Code Playgroud)
Amount从组中删除列以获取正确的行。然后,您可以再次将该查询加入到表中以获取您需要的所有数据。以下是使用 CTE 获取最大日期的示例:
WITH MaxDates_CTE (Finance_Charge_ID, MaxDate) AS
(
select s.Finance_Charge_ID,
MAX(s.start_date) MaxDate
from Service_User_Finance_Charges s
where s.Service_User_ID = '156'
group by s.Finance_Charge_ID
)
SELECT *
FROM Service_User_Finance_Charges
JOIN MaxDates_CTE
ON MaxDates_CTE.Finance_Charge_ID = Service_User_Finance_Charges.Finance_Charge_ID
AND MaxDates_CTE.MaxDate = Service_User_Finance_Charges.start_date
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10878 次 |
| 最近记录: |