首页 新闻 搜索 专区 学院

SQL查询获取最后一笔时间数据问题

0
悬赏园豆:80 [已解决问题] 解决于 2011-10-17 17:25

数据库表如下:

    列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

 请大侠帮忙 啊

youwj的主页 youwj | 初学一级 | 园豆:30
提问于:2011-10-17 15:23
< >
分享
最佳答案
0
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
收获园豆:40
LCM | 大侠五级 |园豆:6876 | 2011-10-17 15:51

我要查询的不是MAX这个时间 、、是给定一个时间、小于等于我这个时间的就行了、

youwj | 园豆:30 (初学一级) | 2011-10-17 16:27

@youwj: 你要设定一个时间,小于等于这个时间就行了,那你就加个where条件就行了啊。不是很简单了么。

LCM | 园豆:6876 (大侠五级) | 2011-10-17 16:48

@LCM: 按你的改的、可以了。谢谢

youwj | 园豆:30 (初学一级) | 2011-10-17 17:23
其他回答(3)
1

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
收获园豆:30
webaspx | 园豆:1973 (小虾三级) | 2011-10-17 15:33

我要查询的不是MAX这个时间 、、是给定一个时间、小于等于我这个时间的就行了、

支持(0) 反对(0) youwj | 园豆:30 (初学一级) | 2011-10-17 16:27

@youwj: "查询出‘列C’时间最大的数据"是我们理解有问题?那你现在要查询的是什么?没看懂你补充的。

支持(0) 反对(0) webaspx | 园豆:1973 (小虾三级) | 2011-10-17 16:36

@webaspx: 是查询列C的最大的那笔数据、但是我要加个Where条件、列C必须要小于我指定的一个时间

支持(0) 反对(0) youwj | 园豆:30 (初学一级) | 2011-10-17 16:40

@youwj: select 列A,max(列C)as 列C into #temp from Table  where 列C<时间

group by 列A;
这样就可以了啊

支持(0) 反对(0) webaspx | 园豆:1973 (小虾三级) | 2011-10-17 16:43

@webaspx: 我说大哥,你按我说的试过吗?确认查询不出来你要的结果?

这是表的数据:

这是结果:

查询的是C小于2011-10-17 17:47:18.937的,然后GroupBy A求得各项最大时间的数据。

支持(0) 反对(0) webaspx | 园豆:1973 (小虾三级) | 2011-10-17 17:03

@webaspx: 呵呵 、之前按你的试了、要建临时表的、还报错、就没试了、现在搞出来了、你最新的应该也是可以的、 辛苦了、 谢谢  分豆

支持(0) 反对(0) youwj | 园豆:30 (初学一级) | 2011-10-17 17:23
0

select t1.A ,max( t1.c) from 表 as t1

group by t1.A

我不知道你的列B要不要考虑,你这个问题带入列B是错误的

如果列B一个20,一个30.你要取哪个呢??

收获园豆:10
dearz | 园豆:588 (小虾三级) | 2011-10-17 16:05

我要查询的不是MAX这个时间 、、是给定一个时间、小于等于我这个时间的就行了、 列B的话就跟着这个时间的这列的

支持(0) 反对(0) youwj | 园豆:30 (初学一级) | 2011-10-17 16:27

@youwj: 我还是不知道你在说什么.

支持(0) 反对(0) dearz | 园豆:588 (小虾三级) | 2011-10-17 16:36
0

sql t1.A1, t1.B1, max(t1.C) over( partition by t1.A ) from t1 group by t1.A1

g5n | 园豆:105 (初学一级) | 2011-10-17 18:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册