我要问你一个困扰我一段时间的问题。
我有这个数据库,注册一家商店的每笔交易,列如下:
产品代码对于每个商品都是唯一的(基本上是条形码),我想为查询中提供的每个product_code提取最新销售,所以我们说“ P914”,“ P959”和“ P953”作为输入,输出应为:
因此,我一直在尝试两种方法来实现此结果,第一种方法是使用简单的max()函数并通过以下方式分组:
select SALE_ID,max(DATE_OF_SALE) as DATE_MAX,PRODUCT_CODE,VENDOR
from SALES
where PRODUCT_CODE in ('P914','P953','P959')
and DATE_OF_SALE is not null
group by SALE_ID,VENDOR,PRODUCT_CODE order by DATE_MAX desc;
我试图通过第二个选择来限制DATE_OF_SALE的第二种方法:
select t1.SALE_ID,t1.DATE_OF_SALE,t1.PRODUCT_CODE,t1.VENDOR
from SALES t1
where t1.PRODUCT_CODE in ('P914','P959')
and t1.DATE_OF_SALE = (select max(t2.DATE_OF_SALE) from SALES t2 where t2.SALE_ID = t1.SALE_ID group by product_code)
order by d_realisation desc;
两个查询都给出完全相同的结果:
我真的无法捕捉到我做错了什么以及如何正确地做。如果有人能帮助我,我将不胜感激
谢谢大家阅读!