使用SQL查询物料最新采购价格的示例

本示例可从SQL Server数据库查得物料在最新采购日期的最小采购价格,即如果同一物料存在多条采购记录,首先取采购日期最大的,如果同一采购日期仍然存在多条记录,取采购价格最低的。(通过调整Order By也可实现其他需求,例如取最早日期或最高采购价格的记录)

--创建临时表,插入测试数据
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

原文地址:https://www.cnblogs.com/lydg/p/11468720.html

时间: 2024-10-26 10:39:16

使用SQL查询物料最新采购价格的示例的相关文章

Sql Server 优化 SQL 查询:如何写出高性能SQL语句

1. 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条记录,那查询优化器会选择“索引查找”方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用 “全表扫描”方式. 可见,执行计划并不是固定的,它是“个性化的”.产生一个正确的“执行计划”有两点很重要: (1)    SQL语句是否清晰地告诉查询优化器它想干什么? (2)

优化SQL查询:如何写出高性能SQL语句

1.首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句,如果用来从一个10万条记录的表中查1条记录,那查询优化器会选择“索引查找”方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用“全表扫描”方式. 可见,执行计划并不是固定的,它是“个性化的“.产生一个正确的”执行计划“有两点很重要: (1)SQL语句是否清晰地告诉查询优化器它想干什么? (2)查询优化器得到

(转)经典SQL查询语句大全

一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4.说明:创建

Hibernated的sql查询

记录一下学习Hibernate的心得 1.为什么HIbernate会支持原生态的sql查询? HQL查询语句虽然方便我们查询,但是基于HQL的查询会将查询出来的对象保存到hibernate的缓存当中,如果在我们的一个大型项目中(数据量超过了百万级),这个时候如果使用hibernate的HQL查询的话,会一次将我们查询的对象查询出来后放到缓存中,这个时候会影响我们的效率,所以当在大型项目中使用hibernate时我们的最佳实践就是--使用原生的SQL查询语句,因为通过SQL查询的话,是不会经过hi

sql查询语句优化

http://www.cnblogs.com/dubing/archive/2011/12/09/2278090.html 最近公司来一个非常虎的dba  10几年的经验 这里就称之为蔡老师吧 在征得我们蔡老同意的前提下  我们来分享一下蔡老给我们带来的宝贵财富 欢迎其他的dba来拍砖  目录 1.什么是执行计划?执行计划是依赖于什么信息.2. 统一SQL语句的写法减少解析开销3. 减少SQL语句的嵌套4. 使用“临时表”暂存中间结果5. OLTP系统SQL语句必须采用绑定变量6. 倾斜字段的绑

ECSHOP后台SQL查询提示错误 this sql May contain UPDATE,DELETE,TRUNCATE,ALTER,DROP,FLUSH,INSERT

一). 首先说一下错误现象: 市面上流行的绝大部分ECSHOP模板,安装的时候都需要执行一段或几段SQL语句来修改数据结构或者初始化一些数据. 大多数ECSHOP管理员为了省事,都会通过 “ECSHOP后台>数据库管理 >SQL查询” 来执行这些SQL语句. 这时问题就来了,当你粘贴进SQL语句,点“提交查询”时,系统就会报出下面的错误: this sql May contain UPDATE,DELETE,TRUNCATE,ALTER,DROP,FLUSH,INSERT,REPLACE,SE

SolrCloud6.1.0之SQL查询测试

Solr发展飞快,现在最新的版本已经6.1.0了,下面来回顾下Solr6.x之后的一些新的特点: (1)并行SQL特性支持,编译成Streaming 表达式,可以在solrcloud集群中,并行执行 (2)SolrCloud的Collection被抽象成关系型数据库表,现在不仅仅可以支持强大的全文检索,还通过SQL支持像数据库一样的BI分析 (3)在SQL的where语句中,全面支持强大的Lucene/Solr语法 (4)一些聚合操作例如Group会自动优化成并行操作,通过使用Streaming

经典SQL查询语句大全

一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 开始 备份BACKUP DATABASE pubs TO testBack4.说明:创建新表create ta

SQL查询语句大全(转)

转自https://www.cnblogs.com/chenglc/p/8421492.html 重点参考https://blog.csdn.net/g1418377085/article/details/77504076/ 一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevi