【发布时间】:2021-03-25 15:07:05
【问题描述】:
我有一张桌子 - t1。此表包含有关材料、每个仓库中的材料数量、该材料的质量和更新日期(数量更新时间)的数据。
我的目标是根据材料的质量在所有仓库中获得总数量的材料。
我的第一步是使用 ROW_NUMBER() 仅使用最新信息。
结果应该是这样的:
我的语法如下:
SELECT * FROM (
select
ROW_NUMBER() OVER (PARTITION BY UPDATE_DATE, MATERIAL_ID, QUALITY, WAREHOUSE
ORDER BY UPDATE_DATE desc) AS 'rownum',
MATERIAL_ID,
WAREHOUSE,
QUALITY,
SUM(INVENTORY) as INVENTORY_TOTAL
from t1 ) AS A
where 1=1 and rownum=1
group by rollup (MATERIAL_ID, QUALITY)
order by MATERIAL_ID desc
但是我得到了错误
选择列表中的“A.rownum”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
在我添加 SUM(INVENTORY) as INVENTORY_TOTAL 和group by rollup (MATERIAL_ID, QUALITY) 之前
一切正常。 (为了根据rownum得到最实际的数据)
有什么建议吗?
提前谢谢你。
【问题讨论】:
-
标记你正在使用的数据库。
-
谢谢,请问您具体是什么意思?
-
。 .数据库有一个名称,例如 SQL Server、Oracle、DB2、BigQuery、Postgres 等。根据语法,我可能猜到 Postgres 或相关数据库。