读书人

求 最大日期 对应 的单价解决思路

发布时间: 2014-01-05 18:22:56 作者: rapoo

求 最大日期 对应 的单价
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


读书人网 >SQL Server

热点推荐