表结构:
客户编码, 商品编码,销售数量,销售金额,销售日期希望查询每个客户,商品的最后一个销售日期的销售数量和销售金额的合计,
每个客户,商品的最后的销日期会不一样,因为客户也许在当天有销售,也许没有销售.如果没有销售就取最后一次的销售情况请问这个sql查询怎么做?
客户编码, 商品编码,销售数量,销售金额,销售日期希望查询每个客户,商品的最后一个销售日期的销售数量和销售金额的合计,
每个客户,商品的最后的销日期会不一样,因为客户也许在当天有销售,也许没有销售.如果没有销售就取最后一次的销售情况请问这个sql查询怎么做?
from tablename a
where not exists(select 1 from tablename where a. 客户编码 = 客户编码 and 商品编码 = a.商品编码 and 销售日期> a.销售日期)
select 商品编码,sum(销售数量),(销售金额) from table a where a.销售日期 in (
select max(b.销售日期) from table b where a.客户编码=b.客户编码
) group by 商品编码
select
a.客户编码,a.商品编码,a.销售数量,a.销售金额,a.销售日期
from
T a
inner join
(select 客户编码,商品编码,max(销售日期) as 销售日期 from T group by 客户编码,商品编码) b
on a.客户编码 =b.客户编码 and a.商品编码 =b.商品编码
----------------------或select
a.客户编码,a.商品编码,a.销售数量,a.销售金额,a.销售日期
from
T a
where
销售日期 =(select top 1 销售日期
from T
where 客户编码=a.客户编码 and 商品编码=a.商品编码 order by 销售日期 desc)
不过如果虽然是同一天 但是不是同一个时间 那么二楼的代码只算出了最后一个时间的销售数和销售金额我改了下二楼的代码
SELECT [客户编码],CONVERT(VARCHAR(10),[销售日期],111) AS [销售日期],SUM([销售数量]) AS [销售数量],SUM([销售金额]) AS [销售金额]
FROM
table a
JOIN (SELECT [客户编码],CONVERT(VARCHAR(10),MAX([销售日期]),111) AS [销售日期] FROM table GROUP BY [客户编码]) b
ON a.[客户编码]=b.[客户编码] AND a.CONVERT(VARCHAR(10),[销售日期],111)=b.[销售日期]
GROUP BY [客户编码]