有两张表表一
ID NAME VALUE FLAG
001 A 200 0
002 B 300 1
003 C 400 1
004 D 200 0
005 E 300 0
表二 ID NAME VALUE
002 B 310
003 C 100
如果表一中得flag为1,vaule取表二中得值
即 得到结果:
ID NAME VALUE FLAG
001 A 200 0
002 B 310 1
003 C 100 1
004 D 200 0
005 E 300 0
查询语句怎么写啊
ID NAME VALUE FLAG
001 A 200 0
002 B 300 1
003 C 400 1
004 D 200 0
005 E 300 0
表二 ID NAME VALUE
002 B 310
003 C 100
如果表一中得flag为1,vaule取表二中得值
即 得到结果:
ID NAME VALUE FLAG
001 A 200 0
002 B 310 1
003 C 100 1
004 D 200 0
005 E 300 0
查询语句怎么写啊
解决方案 »
- oracle技术问题
- 着急,如果对有out参数的存储过程建立调度job任务呢
- oracle10 stream问题求教?
- 奇怪问题:关于使用java插入数据到oracle
- oracle的Sqldeveloper导出sql 2005的数据时候,sql 2005的一个date字段,导出数据是"oracle.sql.TIMESTAMP@6adf2f"
- Proc 问题
- 一个时间转换的问题
- 请教一条分组统计的sql语句
- 又是可恶的SQL语句。
- SQL匹配查询同一个字段里的字符串只匹配其中一个字符。其他后面的字符一样的。相同的数据并列显示出来
- -- 严重鄙视那些无证程序员...... --
- 关于SQL查询出来的数据合并问题。求解答急
from A a,B b
where a.id = b.id
with t1 as
(
select '001' as id, 'A' as name, 200 as value, 0 as flag from dual
union all
select '002' as id, 'B' as name, 300 as value, 1 as flag from dual
union all
select '003' as id, 'C' as name, 400 as value, 1 as flag from dual
union all
select '004' as id, 'D' as name, 200 as value, 0 as flag from dual
union all
select '005' as id, 'E' as name, 300 as value, 0 as flag from dual
),
t2 as
(
select '002' as id, 'B' as name, 310 as value from dual
union all
select '003' as id, 'C' as name, 100 as value from dual
)
select t1.id, t1.name,
decode(t1.flag, 1, t2.value, t1.value) as value,
t1.flag
from t1 left join t2
on t1.id = t2.id
order by t1.id;
select a.ID,a.NAME,decode(a.FLAG,1,b.VALUE,a.VALUE) as VALUE,a.FLAG
from tab1 a,tab2 b
where a.ID=b.ID
加个左连select a.ID,a.NAME,decode(a.FLAG,1,b.VALUE,a.VALUE) as VALUE,a.FLAG
from tab1 a,tab2 b
where a.ID=b.ID(+)