Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我想计算每行的最大金额_Sql_Row Number - Fatal编程技术网

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;

样本数据、期望的结果和数据库标记会有所帮助。