Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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_Postgresql_Greatest N Per Group - Fatal编程技术网

根据存储选择每个产品的最新余额(SQL)

根据存储选择每个产品的最新余额(SQL),sql,postgresql,greatest-n-per-group,Sql,Postgresql,Greatest N Per Group,我正在尝试根据storeid获取每个产品的最新余额。但我不知道为什么会得到重复的股票名称sasi Sql查询 select stockname, balance,updatedat,storename,s1.productid,s1.storeid from stockmovement s1 inner join (select storeid, productid, max(updatedat) as maxdate from stockmovement

我正在尝试根据storeid获取每个产品的最新余额。但我不知道为什么会得到重复的股票名称
sasi

Sql查询

select stockname, balance,updatedat,storename,s1.productid,s1.storeid
from stockmovement s1
inner join (select storeid, productid, max(updatedat) as maxdate
            from stockmovement
            group by storeid,productid) s2
on s2.storeid = s1.storeid and s2.maxdate = s1.updatedat

使用行号()尝试下面的查询:


使用行号()尝试以下查询:

这是一个问题,在Postgres中使用以下工具可以有效地解决:

select distinct on (storeid, productid) *
from stockmovement
order by storeid, productid, updatedat desc 
这通常比使用窗口函数的等效解决方案要快。

这是一个问题,在Postgres中使用以下函数可以有效地解决:

select distinct on (storeid, productid) *
from stockmovement
order by storeid, productid, updatedat desc 


这通常比使用窗口函数的等效解决方案快。

这肯定是最明智的答案。:)这个答案无效。我只想选择特定的列,而不是全部(*)@sy523:well,然后用您想要的列替换
*
。我有一些问题,如产品:A余额:10日期:2021-03-18 09:01:00存储ID:1,产品:B余额:6日期:2021-03-18 09:01:00存储ID:1和产品:A余额:12日期:2021-03-18 10:01:00存储ID:1。当前使用的查询结果是product:A余额:10和product:B余额:6,但预期结果是product:A余额:12和product:B余额:6@a_horse_with_no_nameIt这肯定是最聪明的答案这个答案无效。我只想选择特定的列,而不是全部(*)@sy523:well,然后用您想要的列替换
*
。我有一些问题,如产品:A余额:10日期:2021-03-18 09:01:00存储ID:1,产品:B余额:6日期:2021-03-18 09:01:00存储ID:1和产品:A余额:12日期:2021-03-18 10:01:00存储ID:1。当前使用的查询结果是product:A余额:10和product:B余额:6,但预期结果是product:A余额:12和product:B余额:6@a_horse_with_no_namei有一些问题,如产品:A余额:10日期:2021-03-18 09:01:00 storeid:1,产品:B余额:6日期:2021-03-18 09:01:00存储ID:1和产品:A余额:12日期:2021-03-18 10:01:00存储ID:1。目前使用您的查询结果是product:A Balance:10和product:B Balance:6,但预期结果是product:A Balance:12和product:B Balance:6如果您需要最新的余额,我已修改了我的答案。非常欢迎您。如果您在这个问题上遇到任何困难,请告诉我。最好的祝愿。如果bupdatedat是datetime类型的字段,queery应该可以工作。那太好了。我有一些问题,比如产品:A余额:10日期:2021-03-18 09:01:00存储ID:1,产品:B余额:6日期:2021-03-18 09:01:00存储ID:1和产品:A余额:12日期:2021-03-18 10:01:00存储ID:1。目前使用您的查询结果是product:A Balance:10和product:B Balance:6,但预期结果是product:A Balance:12和product:B Balance:6如果您需要最新的余额,我已修改了我的答案。非常欢迎您。如果您在这个问题上遇到任何困难,请告诉我。最好的祝愿。如果bupdatedat是datetime类型的字段,queery应该可以工作。那太好了。最美好的祝福。
select distinct on (storeid, productid) *
from stockmovement
order by storeid, productid, updatedat desc