繁体   English   中英

获取每个项目的最大日期(最后销售日期)列没有?

[英]Get max date (last date sale) column against each item no?

我有以下返回结果的 SQL 查询

结果图像

itemno和销售no of total quantity no。我也想要针对每个 item 的itemdescripton列。 invitems ITEMDESC#列。

SQL 查询:

 select INITEMS.ITEMNO,(COUNT(INITEMS.ITEMNO)*COUNT(INITEMS.QTY)) 'Item 
 Sale',INITEMS.ITEMDESC#1 from InvItems INITEMS
INNER JOIN InvHdr HDR ON INITEMS.INVNO=HDR.INVNO
WHERE INITEMS.TYPE='3'
GROUP BY INITEMS.ITEMNO,INITEMS.ITEMDESC#1

我想要结果中的max date (last date item sale)列。 InvHdr表中针对每个InvNo Date

正如前面评论中所解释的,您的查询不起作用,因为您对同一个ITEMNO有不同的ITEMDESC

这你“给”你你想要的结果

select INITEMS.ITEMNO,
       MAX(INITEMS.ITEMDESC#1) AS 'ITEMDESC',
       (COUNT(INITEMS.ITEMNO)*COUNT(INITEMS.QTY)) 'Item Sale'
FROM   InvItems INITEMS
INNER JOIN InvHdr HDR ON INITEMS.INVNO = HDR.INVNO
WHERE INITEMS.TYPE = '3'
GROUP BY INITEMS.ITEMNO

但是你必须检查为什么你的数据中有这样的东西。 你可以列出那些属于这种情况的ITEMNO

SELECT ITEMNO
FROM   InvItems 
GROUP BY ITEMNO
HAVING MAX(ITEMDESC#1) <> MIN(ITEMDESC#1)

假设您正在使用高于 2005 的 SQL Server 版本(现在这是一个非常安全的假设),您可以将over子句与聚合函数一起使用,从而可能消除对group by子句的需要(这可能是因为group by将为group by子句中存在的每个值(或一组值)返回不同的结果 - 因此您可能还需要使用distinct

SELECT initems.itemno,
       COUNT(initems.itemno) OVER (PARTITION BY initems.itemno)
       * SUM(initems.qty) OVER (PARTITION BY initems.itemno)
FROM InvItems AS initems
WHERE initems.type = '3' 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM