- 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 诊治类型='住院'