日期:2014-05-17  浏览次数:20622 次

求 最大日期 对应 的单价
 SELECT 编码,单价,日期 FROM Ven_Inv_Price WHERE cInvCode='305002010001'
以上查询语句, 求日期最大值对应的单价,SQL如何写呢,谢谢.

------解决方案--------------------
select top 1 *
from (SELECT 编码,单价,日期,rn=ROW_NUMBER() over(Order by 日期 desc) 
FROM Ven_Inv_Price WHERE cInvCode=@cInvCode  --@cInvCode为外部传进来的参数
)t
order by rn

------解决方案--------------------
引用:
Quote: 引用:

select top 1 *
from (SELECT 编码,单价,日期,rn=ROW_NUMBER() over(Order by 日期 desc) 
FROM Ven_Inv_Price WHERE cInvCode=@cInvCode  --@cInvCode为外部传进来的参数
)t
order by rn

实际的例子是  SELECT 编码,单价,日期 FROM Ven_Inv_Price   没有WHERE 这个条件,但又要求查询出来的结果又必须 按照 最近的日期来显示


那是这样吗:

SELECT top 1 编码,单价,日期)
FROM Ven_Inv_Price
Order by 日期 desc
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

 SELECT 编码,单价,日期 FROM Ven_Inv_Price WHERE cInvCode='305002010001'
以上查询语句, 求日期最大值对应的单价,SQL如何写呢,谢谢.


 SELECT 编码,单价,max(日期) as rq FROM Ven_Inv_Price WHERE cInvCode='305002010001'
group by 编码,单价


这个明显不好, 因为单价不同,会出来多个记录,实际上我只能允许单个记录


select a.编码,a.单价, a.日期 from Ven_Inv_Price a ,

(SELECT 编码,max(日期) as rq FROM Ven_Inv_Price 

WHERE cInvCode='305002010001'

group by 编码) b

where a.编码=b.编码 and a.日期=b.rq