oracle 库中表t,有四字段a(字符串), b (字符串), c(字符串), d(int型)...别的字段不提,表的完整性,正确性无问题!数据:
a b c d
a1 b1 c1 1
a1 b2 c1 2
a1 b3 c1 3
a1 b1 c2 1
a1 b2 c2 2
.
.
a1 bm cn 1
a1 bj cn 2
a1 bq cn 3
a1 br cn 4
sql要求:输出四字段,要求:对应c字段选出最大的d字段值
如结果是:
a1 b3 c1 3
a1 b3 c2 2
.
a1 br cn 4请给出SQL语句>oracle的!谢谢另:oracle 中 group by 用不了?
a b c d
a1 b1 c1 1
a1 b2 c1 2
a1 b3 c1 3
a1 b1 c2 1
a1 b2 c2 2
.
.
a1 bm cn 1
a1 bj cn 2
a1 bq cn 3
a1 br cn 4
sql要求:输出四字段,要求:对应c字段选出最大的d字段值
如结果是:
a1 b3 c1 3
a1 b3 c2 2
.
a1 br cn 4请给出SQL语句>oracle的!谢谢另:oracle 中 group by 用不了?
还有,那个结果看得不大明白
a,b,c,d四个四段各需要什么取值
where not exists(select 1 from tab b where a.c=b.c and a.d<b.d)
搜索出对应一组c值(如c= c1 时)取出d最大值的记录当c = c2 时,取出来的是a1 b2 c2 2
当c = cn 时,取出来的是a1 br cn 4要求输出全部字段!!!刚刚试了不输出b字段时sql:
select t.a, t.c, max(t.d) from t where t.a='a1' group by t.a, t.c但是要输出t.b就不对了???
>????
所说:与我上面情况一直,关键 group by 之后我b列值不参加分组,情况就不对了,给你看实际数据
不输出b列时::>>>>>>
JH CH MAX(T.PJXH)
高11 1 4
高11 10 3
高11 11 3
高11 12 2
高11 13 2
高11 14 2
高11 15 2
高11 16 3
高11 17 1
高11 18 1
高11 19 1
高11 2 2
高11 20 1
高11 21 1
高11 22 1
高11 23 2
高11 24 1
高11 25 1
高11 26 1
高11 27 1
高11 28 1
高11 29 1
高11 3 3
高11 30 1
高11 31 1
高11 32 1
高11 33 2
高11 4 2
高11 5 3
高11 6 4
高11 7 2
高11 8 2
高11 9 4
高11 补1 1
输出b列时:>>>>>>>>>>>>>
JH CH DJSD2 MAX(T.PJXH)
高11 1 1592.4 4
高11 1 1594 3
高11 10 1722.2 1
高11 10 1723.6 3
高11 11 1728 1
高11 11 1729.4 3
高11 12 1749.2 1
高11 12 1750.6 2
高11 13 1759.6 1
高11 13 1761 2
高11 14 1770.6 1
高11 14 1771.2 2
高11 15 1781 1
高11 15 1782.4 2
高11 16 1788.4 1
高11 16 1790.2 3
高11 16 1791.6 2
高11 17 1867.4 1
高11 18 1910.2 1
高11 19 1918.6 1
高11 2 1598.4 1
高11 2 1599.8 2
高11 20 1944.2 1
高11 21 1948 1
高11 22 1957.6 1
高11 23 1975.6 2
高11 24 2110 1
高11 25 2114.6 1
高11 26 2123.8 1
高11 27 2167 1
高11 28 2199.2 1
高11 29 2207.6 1
高11 3 1603 3
高11 3 1604.4 1
高11 30 2220.6 1
高11 31 2226 1
高11 32 2232 1
select * from tab a
where not exists(select 1 from tab where c=a.c and d >a.d)
根据您的提示:我写了个SQL,成功!估计需要优化,请看
select t.a, t.b, t.c, t.d from t where (t.c, t.d) in (select tt.ch, max(tt.d) from t tt where tt.a= 'a1' group by tt.c) and t.a= 'a1' order by t.b
把in 换成 exists select t.a, t.b, t.c, t.d from t where exists (select 1 from (select tt.ch, max(tt.d) d from t tt where tt.a= 'a1' group by tt.c) t_1 where t.c=t_1.ch and t.d=t_1.d) and t.a = 'a1' order by t.b;