有这么一张表
CREATE TABLE table_test
(
ID NUMBER,
NAME VARCHAR2(80),
age NUMBER,
birthplace varchar2(240)
)
插入数据
INSERT INTO table_test VALUES(1,'TOM',20,'China');INSERT INTO table_test VALUES(2,'TOM',23,'China');想实现一条语句就是当NAME、birthplace相同时,下一条数据的age为0,实现效果ID NAME AGE BIRTHPLACE
1 TOM 20 CHINA
2 TOM 0 CHINA请问用一条sql语句如何实现呢?
CREATE TABLE table_test
(
ID NUMBER,
NAME VARCHAR2(80),
age NUMBER,
birthplace varchar2(240)
)
插入数据
INSERT INTO table_test VALUES(1,'TOM',20,'China');INSERT INTO table_test VALUES(2,'TOM',23,'China');想实现一条语句就是当NAME、birthplace相同时,下一条数据的age为0,实现效果ID NAME AGE BIRTHPLACE
1 TOM 20 CHINA
2 TOM 0 CHINA请问用一条sql语句如何实现呢?
解决方案 »
- Oracle连接一个java软件(Ireport)后,想要从一张表中同时获取总人数、男生数、女生数,如何解决?
- 如何使ORACLE的TABLE显示不是ID,而是DESCRIPTION 就像MS-Access的LOOK-UP table 功能一样?
- 被一个clob搞的加班,泪奔……(就剩20分了,抱歉)
- 关于还原dmp文件的问题
- 数据库oracle有什么视频推荐一下,我为了学JAVA
- linux php 操作oracle数据库
- 表空间删除特例
- 救命,被ORACLE搞死掉了。
- 急!请问oracle817报这个错误“ORA-01033: Message 1033 not found; No message file for product=RDBMS,facility=ORA”是什么意思,如何
- 关于job的设置?
- 急求助:一个计算百分比的SQL该如何写?请高人指点,不胜感激!
- oracle 不同用户之间 调用存储过程 高手指教
SELECT t.*,
lag(t.name || t.birthplace) over(PARTITION BY t.name, t.birthplace ORDER BY id) lab
FROM table_test t);
m.NAME,
DECODE(m.cnt, 1, m.age, 0) age,
m.birthplace
FROM (SELECT t.*,
row_number() OVER(PARTITION BY t.NAME, t.birthplace ORDER BY t.ID) cnt
FROM table_test t) m
ORDER BY 1
from table_test a
left join (select min(id) id,min(age) age,name,birthplace,min(name||birthplace) lab
from table_test
group by name,birthplace) b
on a.id = b.id
order by a.id老的方法