一道笔试题目

nbgis1987 2015-04-25 06:19:14
今天笔试有一道题,大家帮我看看
日期 合同号 金额
2014-03-01 14:30:31 R01 99999
2014-03-02 14:30:31 R02 23333
2014-03-01 14:30:31 R06 66666
2014-04-01 14:30:31 R03 12345
2014-02-01 14:30:31 R01 54321
... ... ...


查询合同号和金额,如果合同号相同,则查询日期最近的一条记录
请问这个SQL语句怎么写
...全文
216 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
闹铃 2015-04-30
  • 打赏
  • 举报
回复

--按 合同号,金额分组 后 按 日期排序 取第一条

select *
from 
(
SELECT row_number()over(partition by 合同号,金额 order by 日期) as N,*
FROM TABLE
) as T
where T.N=1;

bitbihz 2015-04-30
  • 打赏
  • 举报
回复
[code=INSERT INTO test1 SELECT '2014-03-01 14:30:31' , 'R01' , 99999 UNION all SELECT '2014-03-02 14:30:31' , 'R02' , 23333 UNION all SELECT'2014-03-01 14:30:31' , 'R06' , 66666 UNION all SELECT'2014-04-01 14:30:31' , 'R03' , 12345 UNION all SELECT'2014-02-01 14:30:31' , 'R01' , 54321 SELECT ht,min(stime), Min(je) FROM test1 GROUP BY ht ][/code]
还在加载中灬 2015-04-25
  • 打赏
  • 举报
回复
--SQL2005
SELECT 合同号,金额 FROM(
	SELECT 合同号,金额
		,ROW_NUMBER()OVER(PARTITION BY 合同号 ORDER BY 日期 DESC)RN
	FROM TB
)T
WHERE RN=1
--兼容SQL2000
SELECT 合同号,金额 FROM TB T1
WHERE NOT EXISTS(SELECT 1 FROM TB T2 WHERE T1.合同号=T2.合同号 AND T1.日期<T2.日期)
方法还是有的,我就举两个吧

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧