select max(decode(t$cpft,'010',t$valu)),t$colt,max(decode(t$cpft,'015',t$valu))
from tabname
group by t$colt
from tabname
group by t$colt
解决方案 »
- 求解,ORACLE的小问题,入门级的
- 多表连接连接方式的选择问题
- 如何使用Oracle sqlplus help
- 请高手解决存储过程
- ORACLE怎么要在OEM建表时,象SQLSERVER自动生成一个自增量的KEY(自动标识那种)
- 又是对象不存在的问题????
- bbs里 每个帖子的属性会有哪些?
- vb6为什么能向oracle 表中的 long raw字段插入图片等大对象,却不能向blob,clob等字段插入图片等大对象???(非常难得问题!!!)
- 请问ORACLE中有查询自关联表时,同级的排序问题?
- oracle备份软件
- 请教一个sql,怎样写一个结果集不再另一个结果集中的sql
- Oracle中关于存储过程的问题!!!
IF 条件=值1 THEN
RETURN(翻译值1)
ELSIF 条件=值2 THEN
RETURN(翻译值2)
......
ELSIF 条件=值n THEN
RETURN(翻译值n)ELSE
RETURN(缺省值)
END IF
from tabname
group by t$colt
如果转换成number类型可以使用 skystar99047(天星)
select t$colt,
sum(decode(t$cpft,'010',t$valu,null)),
sum(decode(t$cpft,'015',t$valu,null)),from tabname
group by t$colt
select a.t$valu as 发动机号 , a.t$colt as 底盘号, b.t$valu as 变速箱号
from tabname a, tabname b
where a.t$colt = b.t$colt
and a.t$cpft = '010'
and b.t$cpft = '015'另外从你的数据看,所有t$cpft='040'的行,都可以删除(冗余数据)。
from yourtable a,yourtable b,yourtable c
where a.t$cpft='040'
and b.t$cpft(+)='010'
and c.t$cpft(+)='015'
and a.t$colt=b.t$colt(+)
and a.t$colt=c.t$colt(+) 因为每一辆车至少占一行,但不一定占三行。
t$colt必须有索引,否则性能有问题。
from tabname
group by t$colt
SELECT MAX(DECODE(t$cpft,'010',t$valu)),t$colt,MAX(DECODE(t$cpft,'015',t$valu))
FROM tabname
GROUP BY t$colt
-------------------------------------------------------------------------------
其实这是个很典型的,用分组方法 显示行列交换 的方法.
以上用了 MAX 函数,其实用 MIN(),SUM() 之类的函数都可以实现同样的功能.
(只要是分组函数就可以了)
===============================================================================希望楼下的给点掌声 beckham 版主. 活活...[推荐收藏...]
SELECT MAX(DECODE(t$cpft,'010',t$valu)),t$colt,MAX(DECODE(t$cpft,'015',t$valu))
FROM tabname
GROUP BY t$colt
-------------------------------------------------------------------------------
其实这是个很典型的,用分组方法 显示行列交换 的方法.
以上用了 MAX 函数,其实用 MIN(),SUM() 之类的函数都可以实现同样的功能.
(只要是分组函数就可以了)
=======================
又学了一招,嘿嘿
FROM tabname
GROUP BY t$colt