日期:2014-05-18  浏览次数:20763 次

sql 未能找到 ID 为 104 的数据库。可能该数据库尚未激活,也可能正在转换过程中
SQL code

  select 明细.*,
 (CAST (CAST((CASE WHEN 总费用=0 THEN 0 ELSE (报销金额*100)/总费用 END) AS NUMERIC(18,2)) AS VARCHAR(20))+'%') AS 报销百分比
from
(SELECT 医疗服务单位.名称 AS 报销单位, COUNT(*) AS 人次, SUM(总费用)
      AS 总费用, SUM(应报金额) AS 应报金额, SUM(报销金额) AS 报销金额, 报销医院编码,报销明细.上级单位编码
FROM ( SELECT dbo.jie(报销登记.登记号) as 登记号, 报销登记.诊治类型, 
      报销登记.登记日期, dbo.jie(报销登记.医疗证号) as 医疗证号, 报销登记.患者姓名, YEAR(报销日期)  AS 年度,MONTH(报销日期) AS 月份,
      报销登记.身份证号, 报销登记.入院日期, 报销登记.出院日期, DATEDIFF(day, 报销登记.入院日期, 报销登记.出院日期) + 1  AS 天数,
      报销登记.住院号, 报销登记.诊治医院编码, 报销登记.单病种,
      医疗服务单位.名称 AS 诊治医院, 服务单位级别.名称 AS 诊治医院级别, 医疗服务单位.级别号,医疗服务单位.上级单位编码 AS 诊治医院上级编码,
      疾病表.疾病名称 AS 入院诊断, 报销登记.报销医院编码, 
      医疗服务单位_1.名称 AS 报销医院,医疗服务单位_1.上级单位编码, 报销登记.总费用, 报销登记.应报金额, 医疗服务单位_1.级别号 AS 报销医院级别,
      报销登记.报销金额, 报销登记.病人自负, 报销登记.单据数, 
      报销登记.报销日期, 报销登记.出院诊断, 行政区划.名称 AS 所在区县, 
      行政区划_1.名称 AS 所在乡镇, 行政区划_2.名称 AS 所在村, 
      (CASE WHEN 报销登记.慢性病人 = 1 THEN '是' ELSE '否' END) AS 慢性病人, 
      (CASE WHEN 报销登记.分娩 = 1 THEN '是' ELSE '否' END) AS 正常分娩, 
      LEFT(dbo.jie(报销登记.医疗证号), 10) AS 区划编码,(CAST((CASE WHEN 总费用=0 THEN 0 ELSE CAST((报销金额*100)/总费用 AS NUMERIC(18,2)) END)  AS VARCHAR(20))+'%') AS 报销百分比
FROM 报销登记 LEFT OUTER JOIN
      行政区划 行政区划_2 ON LEFT(dbo.jie(报销登记.医疗证号), 10) 
      = 行政区划_2.国际编码 LEFT OUTER JOIN
      行政区划 行政区划_1 ON LEFT(dbo.jie(报销登记.医疗证号), 8) 
      = 行政区划_1.国际编码 LEFT OUTER JOIN
      行政区划 ON LEFT(dbo.jie(报销登记.医疗证号), 6) 
      = 行政区划.国际编码 LEFT OUTER JOIN
      医疗服务单位 医疗服务单位_1 ON 
      报销登记.报销医院编码 = 医疗服务单位_1.编码 LEFT OUTER JOIN
      疾病表 ON 报销登记.入院诊断 = 疾病表.编号 LEFT OUTER JOIN
      服务单位级别 RIGHT OUTER JOIN
      医疗服务单位 ON 服务单位级别.级别号 = 医疗服务单位.级别号 ON 
      报销登记.诊治医院编码 = 医疗服务单位.编码
WHERE 报销登记.审核=1 AND 诊治类型='住院') 报销明细 LEFT OUTER JOIN
      医疗服务单位 ON 报销明细.报销医院编码 = 医疗服务单位.编码
WHERE (诊治类型 = '住院') and (单病种=1)
GROUP BY 报销医院编码,医疗服务单位.名称,报销明细.上级单位编码
) 明细



写了加密和解密字符串的函数,但是上面调用时出现<未能找到 ID 为 104 的数据库。可能该数据库尚未激活,也可能正在转换过程中> 错误! 不知怎么回事?如果把中间的带解密函数的查询生成视图,在调用就没问题!但是数据量大的时候,生成视图再调用会很慢!出现上述错误是什么原因呢?或者能给个不用视图,能解决此问题方法?小弟不胜感激!!!!!小弟分少,以后补上!

------解决方案--------------------
try:
first:
SQL code
 SELECT dbo.jie(报销登记.登记号) as 登记号, 报销登记.诊治类型, 
      报销登记.登记日期, dbo.jie(报销登记.医疗证号) as 医疗证号, 报销登记.患者姓名, YEAR(报销日期)  AS 年度,MONTH(报销日期) AS 月份,
      报销登记.身份证号, 报销登记.入院日期, 报销登记.出院日期, DATEDIFF(day, 报销登记.入院日期, 报销登记.出院日期) + 1  AS 天数,
      报销登记.住院号, 报销登记.诊治医院编码, 报销登记.单病种,
      医疗服务单位.名称 AS 诊治医院, 服务单位级别.名称 AS 诊治医院级别, 医疗服务单位.级别号,医疗服务单位.上级单位编码 AS 诊治医院上级编码,
      疾病表.疾病名称 AS 入院诊断, 报销登记.报销医院编码, 
      医疗服务单位_1.名称 AS 报销医院,医疗服务单位_1.上级单位编码, 报销登记.总费用, 报销登记.应报金额, 医疗服务单位_1.级别号 AS 报销医院级别,
      报销登记.报销金额, 报销登记.病人自负, 报销登记.单据数, 
      报销登记.报销日期, 报销登记.出院诊断, 行政区划.名称 AS 所在区县, 
      行政区划_1.名称 AS 所在乡镇, 行政区划_2.名称 AS 所在村, 
      (CASE WHEN 报销登记.慢性病人 = 1 THEN '是' ELSE '否' END) AS 慢性病人, 
      (CASE WHEN 报销登记.分娩 = 1 THEN '是' ELSE '否' END) AS 正常分娩, 
      LEFT(dbo.jie(报销登记.医疗证号), 10) AS 区划编码,(CAST((CASE WHEN 总费用=0 THEN 0 ELSE CAST((报销金额*100)/总费用 AS NUMERIC(18,2)) END)  AS VARCHAR(20))+'%') AS 报销百分比
  into #
FROM 报销登记 LEFT OUTER JOIN
      行政区划 行政区划_2 ON LEFT(dbo.jie(报销登记.医疗证号), 10) 
      = 行政区划_2.国际编码 LEFT OUTER JOIN
      行政区划 行政区划_1 ON LEFT(dbo.jie(报销登记.医疗证号), 8) 
      = 行政区划_1.国际编码 LEFT OUTER JOIN
      行政区划 ON LEFT(dbo.jie(报销登记.医疗证号), 6) 
      = 行政区划.国际编码 LEFT OUTER JOIN
      医疗服务单位 医疗服务单位_1 ON 
      报销登记.报销医院编码 = 医疗服务单位_1.编码 LEFT OUTER JOIN
      疾病表 ON 报销登记.入院诊断 = 疾病表.编号 LEFT OUTER JOIN
      服务单位级别 RIGHT OUTER JOIN
      医疗服务单位 ON 服务单位级别.级别号 = 医疗服务单位.级别号 ON 
      报销登记.诊治医院编码 = 医疗服务单位.编码
WHERE 报销登记.审核=1 AND 诊治类型='住院'