sql怎么查一年里所有物品最后一次的采购价格?
发布网友
发布时间:2022-04-24 07:54
我来回答
共3个回答
懂视网
时间:2022-04-11 03:26
创建临时表,插入测试数据
if Object_id(‘Tempdb..#temp1‘) is not null drop table #temp1
create table #temp1(ItemNumber varchar(10),PurchDate date,PurchPrice decimal(10,2))
insert into #temp1(ItemNumber,PurchDate,PurchPrice)
select ‘Item01‘, ‘2016-1-8‘,3.33 union all
select ‘Item01‘, ‘2016-5-8‘,2.22 union all
select ‘Item01‘, ‘2016-3-8‘,1.11 union all
select ‘Item02‘, ‘2016-3-9‘,4.44 union all
select ‘Item02‘, ‘2016-5-9‘,5.55 union all
select ‘Item02‘, ‘2016-1-9‘,6.66 union all
select ‘Item03‘, ‘2016-1-7‘,9.99 union all
select ‘Item03‘, ‘2016-3-7‘,8.88 union all
select ‘Item03‘, ‘2016-3-7‘,7.77
--查询所有信息
select * from #temp1 order by ItemNumber asc,PurchDate desc,PurchPrice asc
--使用row_number() over partition by 查询物料的最新采购价格,如果同一日期有多个价格取最小值
select *
from (
select ItemNumber,PurchDate,PurchPrice,
row_number() over(partition by ItemNumber order by ItemNumber asc,PurchDate desc,PurchPrice asc) row_num
from #temp1) t1
where t1.row_num=1
使用SQL查询物料最新采购价格的示例
标签:存在 null desc class 记录 create obj nbsp query
热心网友
时间:2022-04-11 00:34
首先:各个数据库(oracle,sqlserver,mysql等)的sql语句并不完全一样,就算我写出语句也几乎不能用。
第二:你的需求并不是十分清晰,而且中间还可能存在各种情况,所以就算我完成了所谓的语句,估计也90%以上的可能不能用,要根据你的业务进行慢慢调整,所以我仅仅给出思路。
(1)你的需求不是很清晰,你说的一年里是2019年一年,还是从现在往前数一年,比如现在是2020年7月,那么就是从2019年7月到现在。
二者的取值方式不同。如果是2019年一年内,那么直接截取前四位就可以了(表内看你应该是存的数字,不是直接存的时间)。如果是到现在的一年内,那么就要用到时间截取函数了,如果是存在数字,那么就要看你是这么存的,如果都是20XX0000这种,那么用现在的时间比如20200701直接减去10000就可以了,然后就是大于小于的事情,但是如果是2020701,那么就要截取改数了,稍微麻烦一点,不过问题不大,这个要你自己去判断。
(2)根据需求第一步完成后,一年内的数据都出来的,你要的是最后一次采购,那么也就是说是时间的max,那么就以品名分组,求时间的max,再将二者连接起来,
比如“上盖20191230”我们假设这个20191230就是时间max的结果,那么在用这个结果去表中匹配:将品名字段与时间字段连接起来(oracle的where写法 :where 品名||时间 in(select 品名||max(时间) from table group by 品名)),只要一样,那么就显示出来,这样就能匹配出价格了。
不过还有一个可能,比如你的公司有多个采购,每个采购的购入价格不同,那么可能在同一时间存在多个价格,比如这里的“金属皮膜电阻SMD”有0.005,还有0.0044,那么你要用哪个(大的,小的,还是全要)这就要好好判断了。
热心网友
时间:2022-04-11 01:52
子查询,先分组求出每个组最大日期,然后子查询 条件是where 日期 in (那个子查询)
SQL查询:交易历史中所有客户所有商品最后一次交易价格
最后一次交易价格 找日期最大的,如下 select * from wc where date=(select max(date) from wc)
怎么有效的利用海关数据来开发客户?
易讯数据,为您提供全球200个国家1000万真实买家,通过交易图谱深度分析四维供应链贸易关系,利用邮件搜和精准邮箱得到有效的客户联系方式,帮您一站式解决查找客户、分析客户、联系客户直至成交客户。
SQL中如何查出各个客户最后一次进货日期及金额?谢谢!
select f. kehu, f.riqi , A.jine from ( select kehu, max(riqi) riqi from A group by kehu ) f, A where f.kehu = A.kehu and f.riqi = A.riqi
sql怎么查一年里所有物品最后一次的采购价格?
(2)根据需求第一步完成后,一年内的数据都出来的,你要的是最后一次采购,那么也就是说是时间的max,那么就以品名分组,求时间的max,再将二者连接起来,比如“上盖20191230”我们假设这个20191230就是时间max的结果,那么在用这个结果去表中匹配:将品名字段与时间字段连接起来(oracle的where写法 :wh...
怎样显示下表中:各种物品的最后一次的记录,写出SQL语句
select * from aa where sn not in (select a.sn from aa a, aa b where a.pm=b.pm and a.rq
如何取出按每个物料编码最后采购的价格
select top 1 [price] from T where number='参数值' order by [date] desc
SQL 查询每个人离指定时间最后一次消费的记录
(如果是ID,NAME换成ID即可),@ENDTIME为统计截止日期。则每个人(NAME)在@ENDTIME之前最后消费记录为:select * from TABLE,(SELECT NAME as name1,MAX(TIME) as TIME1 FROM TABLE where Time<=@ENDTIME GROUP BY name) a where name=name1 and time=time1 ...
用SQL语句查询出:按每天,每个料号,每个仓库.最后一次.入库数量(即最后...
select * from #tempInventory where (日期+料号+仓库) in (select max(日期)+料号+仓库 from #tempInventory group by 料号,仓库,CONVERT(VARCHAR(100),LEFT(日期,10),23) )
sql查询一年各个月最后一次记录
select table_name.from table_name where table_name.t_date in (select max(t.t_date)from table_name t where to_char(t.t_date, 'yyyy') = '2009'group by to_date(t.t_date, 'yyyy-mm'))这是ORACLE的,未经过测试。楼上写的是每个月最后一天的记录,不是每个月最后一条记录。
SQL查询:如表:消费记录有很多,如何得到每个人的最后一次的消费记录,
select top 1 * from T_ClientConsuemLog order by F_ClientConsumeMon desc ,F_ClientConsumeDate desc;
sql如何查每个用户最后一次使用记录
select 工单id,用户id from 工单表 a where 建单时间=(select max(b.建单时间) from 工单表 b where b.用户id=a.用户id)