sql中的函数MAX只能对一整列求最大值.我现在需要对某一条记录的多个字段的值进行比较,单用sql语句可以实现吗? 如题,谢谢达人帮忙解决 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己写一个函数maxnum,传两个值进去,返回较大的值,然后嵌套调用该函数select maxnum(col4,maxnum(col3,maxnum(col1,col2))) from tabname 求某几列中最大值select greatest(col1,col2,col3...) from tablename;求某几列中最小值select least(col1,col2,col3...) from tablename; 你要比较的字段有几个啊?如果少可以用CASE WHEN 试试.你要横向比较,还真怪呢! 是横向比较,greatest是纵向的吧,还是自己写函数吧 不知道楼上所说的横向和纵向是什么意思,max()才应该是对纵列进行比较,自己比较下吧:SQL> select c1,c2,c3 from c; C1 C2 C3---------- ---------- ---------- 8 3 4 5 6 2 6 4 11SQL> select max(c1),max(c2),max(c3) from c; MAX(C1) MAX(C2) MAX(C3)---------- ---------- ---------- 8 6 11SQL> select c1,c2,c3,greatest(c1,c2,c3),least(c1,c2,c3) from c; C1 C2 C3 GREATEST(C1,C2,C3) LEAST(C1,C2,C3)---------- ---------- ---------- ------------------ --------------- 8 3 4 8 3 5 6 2 6 2 6 4 11 11 4 楼上正解,用greatest()和least()两个函数就可以。 如果要在几个列 多个行的数据中找到最大的就这样:select greatest(max(a),max(b)) from t不过这样什么索引也用不上,只会FullTableAccess。下面的 就可以用索引了select max(c) from ( select max(a) c from t union all select max(b) c from t) 随便请教一下 greatest_lb(x[,y],[,…]) 说是返回标签列表中的最大值不知道怎么用 '标签' 是什么意思???? Oracle用exp导出数据是的问题,在线急等啊…… 关于数据查询的问题 如何获取oracle中所有的数据修改历史记录? 请教一个按周分组的问题 搞数据库月薪15,000的条件 如何用pro*c编写创建表空间的程序? 如何跟踪ORACLE执行了哪些SQL语句 ORACLE 安装版本的问题!好多的分! 帮忙分析一下这段代码? 课题申报:基于Oracle的自定义查询系统的设计与构建。请各位同道提供思路! 高分求SQL写法 高分求教一个SQL文的写法,多谢了。
select maxnum(col4,maxnum(col3,maxnum(col1,col2))) from tabname
select greatest(col1,col2,col3...) from tablename;
求某几列中最小值
select least(col1,col2,col3...) from tablename;
如果少可以用CASE WHEN 试试.你要横向比较,还真怪呢!
---------- ---------- ----------
8 3 4
5 6 2
6 4 11SQL> select max(c1),max(c2),max(c3) from c; MAX(C1) MAX(C2) MAX(C3)
---------- ---------- ----------
8 6 11SQL> select c1,c2,c3,greatest(c1,c2,c3),least(c1,c2,c3) from c; C1 C2 C3 GREATEST(C1,C2,C3) LEAST(C1,C2,C3)
---------- ---------- ---------- ------------------ ---------------
8 3 4 8 3
5 6 2 6 2
6 4 11 11 4
就这样:
select greatest(max(a),max(b)) from t
不过这样什么索引也用不上,只会FullTableAccess。
下面的 就可以用索引了
select max(c) from
(
select max(a) c from t
union all
select max(b) c from t
)
不知道怎么用 '标签' 是什么意思????