数据库表如下:
列A 列B 列C
AA 20 2011-10-17 00:00:00
BB 20 2011-10-17 00:00:00
AA 20 2011-10-17 10:00:00
我想得到的结果是以‘列A’为分组条件、查询出‘列C’时间最大的数据、理想得到的结果如下:
列A 列B 列C
AA 20 2011-10-17 10:00:00
BB 20 2011-10-17 00:00:00
请大侠帮忙 啊
我刚那问题描述好像有些问题、大侠们都有些误解,我再详细点说
数据库表如下:
列A 列B 列C
AA 10 2011-10-17 00:11:00
BB 20 2011-10-17 00:12:00
AA 30 2011-10-17 00:13:00
BB 40 2011-10-17 00:14:00
AA 50 2011-10-17 00:15:00
我想得到的结果是以‘列A’为分组条件、查询出‘小于指定时间的列C’时间最大的数据、比如我想查询小于等于”2011-10-17 00:14:00“的数据,理想得到的结果如下:
列A 列B 列C
AA 30 2011-10-17 00:13:00
BB 40 2011-10-17 00:14:00
请大侠帮忙 啊
SELECT t1.A, t1.B, t1.C
FROM 表名 AS t1 RIGHT OUTER JOIN
(SELECT A, MAX(C) AS C
FROM 表名
GROUP BY A) AS t2 ON t1.A = t2.A AND t1.C = t2.C
我要查询的不是MAX这个时间 、、是给定一个时间、小于等于我这个时间的就行了、
@youwj: 你要设定一个时间,小于等于这个时间就行了,那你就加个where条件就行了啊。不是很简单了么。
@LCM: 按你的改的、可以了。谢谢
select 列A,max(列C)as 列C into #temp from Table group by 列A;
select b.* from #temp a,Table b
where a.列A=b.列A and a.列C=b.列C
我要查询的不是MAX这个时间 、、是给定一个时间、小于等于我这个时间的就行了、
@youwj: "查询出‘列C’时间最大的数据"是我们理解有问题?那你现在要查询的是什么?没看懂你补充的。
@webaspx: 是查询列C的最大的那笔数据、但是我要加个Where条件、列C必须要小于我指定的一个时间
@youwj: select 列A,max(列C)as 列C into #temp from Table where 列C<时间
group by 列A;
这样就可以了啊
@webaspx: 我说大哥,你按我说的试过吗?确认查询不出来你要的结果?
这是表的数据:
这是结果:
查询的是C小于2011-10-17 17:47:18.937的,然后GroupBy A求得各项最大时间的数据。
@webaspx: 呵呵 、之前按你的试了、要建临时表的、还报错、就没试了、现在搞出来了、你最新的应该也是可以的、 辛苦了、 谢谢 分豆
select t1.A ,max( t1.c) from 表 as t1
group by t1.A
我不知道你的列B要不要考虑,你这个问题带入列B是错误的
如果列B一个20,一个30.你要取哪个呢??
我要查询的不是MAX这个时间 、、是给定一个时间、小于等于我这个时间的就行了、 列B的话就跟着这个时间的这列的
@youwj: 我还是不知道你在说什么.
sql t1.A1, t1.B1, max(t1.C) over( partition by t1.A ) from t1 group by t1.A1