日期:2014-05-16  浏览次数:20714 次

一个简单的视图问题
 
  create view 医院排名表
  as
  select 序号,医院名称,医院等级,管辖类别,(医院等级分+管辖类别分) as 得分
  from (select 序号,医院名称,医院等级,管辖类别,
  CASE 医院等级
  WHEN '一级' THEN 10
  WHEN '二级' THEN 8.2
  WHEN '二级甲等'THEN 9.1
  WHEN '二级乙等' THEN 8.8
  WHEN '三级甲等' THEN 7.5
  WHEN '三级'THEN 7
  ELSE 0 END AS 医院等级分,
  CASE 管辖类别
  WHEN '省级' THEN 10
  WHEN '市级' THEN 9
 WHEN '县级' THEN 8
  WHEN '私人医院' THEN 7
  WHEN '附属医院' THEN 8.8
 WHEN '职工医院' THEN 8.3
  WHEN '军队医院' THEN 9.2
  ELSE 0 END
  AS 管辖类别分
  from 医院信息表) b
 ;


结果为:
WHEN '一级' THEN 10
  *
第 6 行出现错误:
ORA-12704: 字符集不匹配


请问怎么该呢?


------解决方案--------------------
CREATE VIEW 医院排名表 AS
as
SELECT 序号,
医院名称,
医院等级,
管辖类别,
(医院等级分 + 管辖类别分) AS 得分
FROM (SELECT 序号,
医院名称,
医院等级,
管辖类别,
CASE
WHEN 医院等级 = '一级' THEN
10
WHEN 医院等级 = '二级' THEN
8.2
WHEN 医院等级 = '二级甲等' THEN
9.1
WHEN 医院等级 = '二级乙等' THEN
8.8
WHEN 医院等级 = '三级甲等' THEN
7.5
WHEN 医院等级 = '三级' THEN
7
ELSE
0
END AS 医院等级分,
CASE
WHEN 管辖类别 = '省级' THEN
10
WHEN 管辖类别 = '市级' THEN
9
WHEN 管辖类别 = '县级' THEN
8
WHEN 管辖类别 = '私人医院' THEN
7
WHEN 管辖类别 = '附属医院' THEN
8.8
WHEN 管辖类别 = '职工医院' THEN
8.3
WHEN '军队医院' THEN
9.2
ELSE
0
END AS 管辖类别分
FROM 医院信息表) B;



改成这样试试
------解决方案--------------------
仔细看我给的sql,和你的sql有区别的,仔细看,我已经给出了改正方法。

探讨

引用:
CREATE VIEW 医院排名表 AS
as
SELECT 序号,
医院名称,
医院等级,
管辖类别,
(医院等级分 + 管辖类别分) AS 得分
FROM (SELECT 序号,
医院名称,
医院等级,
管辖类别,
CASE
WHEN 医院等级 = '一级' THEN
10
WHEN 医院等级 = '二级' THEN
……