select
decode(e.hospital_id,'6202020012',d.second_money,decode (e.grade_id,'10',d.first_money,'20',d.second_money,'30',d.third_money,0),0) as zfbz
from bf_disease d,bs_hospital e我想实现这样的功能:首先如果医院编码hospital_id为6202020012,则zfbz为second_money,如果是其他医院,则根据该医院的医院等级赋值,一级10的话则zfbz为first_money,二级20为second_money,三级30为third_money。现在的查询语句问题在于:如果医院编码hospital_id为6202020012,则zfbz为second_money,对
等于其他医院编码时,查处来的结果为空。
如果把前面的医院编码hospital_id为6202020012限制去点,直接根据医院等级查询都有结果。大家帮我看看到底怎么回事。在线等?????????
decode(e.hospital_id,'6202020012',d.second_money,decode (e.grade_id,'10',d.first_money,'20',d.second_money,'30',d.third_money,0),0) as zfbz
from bf_disease d,bs_hospital e我想实现这样的功能:首先如果医院编码hospital_id为6202020012,则zfbz为second_money,如果是其他医院,则根据该医院的医院等级赋值,一级10的话则zfbz为first_money,二级20为second_money,三级30为third_money。现在的查询语句问题在于:如果医院编码hospital_id为6202020012,则zfbz为second_money,对
等于其他医院编码时,查处来的结果为空。
如果把前面的医院编码hospital_id为6202020012限制去点,直接根据医院等级查询都有结果。大家帮我看看到底怎么回事。在线等?????????
SELECT DECODE (e.hospital_id,
'6202020012', d.second_money,
DECODE (e.grade_id,
'10', d.first_money,
'20', d.second_money,
'30', d.third_money,
0
)
) AS zfbz
FROM bf_disease d, bs_hospital e这样看看你原来
SELECT DECODE (e.hospital_id,
'6202020012', d.second_money,
DECODE (e.grade_id,
'10', d.first_money,
'20', d.second_money,
'30', d.third_money,
0
), 0
) AS zfbz
FROM bf_disease d, bs_hospital e
红字部分有问题
decode(e.hospital_id, '6202020012',d.second_money,
decode(e.grade_id,'10',d.first_money,'20',d.second_money,'30',d.third_money,0)) as zfbz
decode(判断条件,=条件1,结果,=条件2,结果2,默认结果)
默认结果可以不写的
你的语句
DECODE (e.hospital_id,
'6202020012', d.second_money,
DECODE (e.grade_id,
'10', d.first_money,
'20', d.second_money,
'30', d.third_money,
0
), 0 )
这样就变成了判断条件=e.hospital_id,条件1='6202020012',结果1=d.second_money
条件2=DECODE (e.grade_id,
'10', d.first_money,
'20', d.second_money,
'30', d.third_money,
0
), 结果2=0
默认值不写,应该是空吧你想要的应该是判断条件=e.hospital_id,条件1='6202020012',结果1=d.second_money
不等于条件1的话,再做二层DECODEDECODE (e.grade_id,
'10', d.first_money,
'20', d.second_money,
'30', d.third_money,
0
),