Sql 我想计算每行的最大金额
我正试图从第#行中获取最大金额,但我被这个查询卡住了Sql 我想计算每行的最大金额,sql,row-number,Sql,Row Number,我正试图从第#行中获取最大金额,但我被这个查询卡住了 SELECT [Member_Id] ,[Picked_Date] ,[Location_Number] ,[Refill_Amount] ,[Total_Refills_Permitted] ,[Quantity_Dispensed] ,ROW_NUMBER() OVER ( PARTITION BY Location_Number ,Member_Id ORD
SELECT [Member_Id]
,[Picked_Date]
,[Location_Number]
,[Refill_Amount]
,[Total_Refills_Permitted]
,[Quantity_Dispensed]
,ROW_NUMBER() OVER (
PARTITION BY Location_Number
,Member_Id ORDER BY Member_Id
,Picked_Date ASC
) AS Row#
FROM DummyTable
WHERE Row# IN (
SELECT MAX(Row#)
FROM DummyTable
);
您正在按
成员Id
进行分区和排序。虽然允许这样做,但这是非正统的,在order by
中包含列除了使排序稍微慢一点,在某些情况下可能会妨碍索引的使用之外,没有任何作用
如果需要最新的行,则:
select dt.*
from (select dt.*,
row_number() over (partition by Location_Number, Member_Id order by Picked_Date desc) as seqnum
from dummytable dt
) dt
where seqnum = 1;
如果您仍然需要行#
,它实际上就是计数。因此,这是另一种选择:
select dt.*
from (select dt.*,
count(*) over (partition by Location_Number, Member_Id) as cnt,
row_number() over (partition by Location_Number, Member_Id order by Picked_Date desc) as seqnum
from dummytable dt
) dt
where seqnum = cnt;
样本数据、期望的结果和数据库标记会有所帮助。