SELECT * FROM (select aa.*,bb.mentalvisitid,
case when bb.BCSFXS='' then '门诊' when bb.BCSFXS='' then '家庭访视' else '电话' end as BCSFXS ,bb.visitdate,
case when bb.Hospitalstatus='' then '目前正在住院' when bb.Hospitalstatus='' then '曾住院,现未住院' else '未住院' end as Hospitalstatus,
case when bb.visittype='' then '不稳定' when bb.visittype='' then '基本稳定' else '稳定' end as visittype ,
case when bb.Followmedicine='' then '按医嘱规律用药' when bb.Followmedicine='' then '间断用药' when bb.Followmedicine='' then '不用药' else '医嘱无需用药' end as Followmedicine,
case when bb.Treatment='' then '痊愈' when bb.Treatment='' then '好转' when bb.Treatment='' then '无变化' when bb.Treatment='' then '加重' else '此项不适用' end as Treatment,
case when bb.Labcheck ='' then '有' else '无' end as Labcheck, bb.labcheckother, (CASE WHEN bb.SYMPTOMS like '%1%' then '幻觉 ' end ||
CASE WHEN bb.SYMPTOMS like '%2%' then '交流困难 ' end ||
CASE WHEN bb.SYMPTOMS like '%3%' then '猜疑 ' end ||
CASE WHEN bb.SYMPTOMS like '%4%' then '喜怒无常 ' end ||
CASE WHEN bb.SYMPTOMS like '%5%' then '行为怪异 ' end ||
CASE WHEN bb.SYMPTOMS like '%6%' then '兴奋话多 ' end ||
CASE WHEN bb.SYMPTOMS like '%7%' then '伤人毁物 ' end ||
CASE WHEN bb.SYMPTOMS like '%8%' then '悲观厌世 ' end ||
CASE WHEN bb.SYMPTOMS like '%9%' then '无故外走 ' end ||
CASE WHEN bb.SYMPTOMS like '%10%' then '自语自笑 ' end ||
CASE WHEN bb.SYMPTOMS like '%11%' then '孤僻懒散 ' end ||
CASE WHEN bb.SYMPTOMS like '%12%' then '其他 ' end
) as SYMPTOMS,
(CASE WHEN bb.RECOVERYMANNER like '%1%' then '生活劳动能力 ' end ||
CASE WHEN bb.RECOVERYMANNER like '%2%' then '职业训练 ' end ||
CASE WHEN bb.RECOVERYMANNER like '%3%' then '学习能力 ' end ||
CASE WHEN bb.RECOVERYMANNER like '%4%' then '社会交往 ' end ||
CASE WHEN bb.RECOVERYMANNER like '%5%' then '其他 ' end
) as RECOVERYMANNER, (select wm_concat(to_char(medname) || '(' || '每日' || to_char(usage) || '次 , ' || to_char(amount) || ')' )
from MB_MentalVisit_Medicine
where ISSTATE = ''
and Mentalvisitid = bb.mentalvisitid) AS MEDICINE, case when bb.DANGERSTATUS='' then '0级' when bb.DANGERSTATUS='' then '1级' when bb.DANGERSTATUS='' then '2级' when bb.DANGERSTATUS='' then '3级' when bb.DANGERSTATUS='' then '4级' when bb.DANGERSTATUS='' then '5级' end as DANGERSTATUS,
case when bb.SELFKNOW='' then '自知力完全' when bb.SELFKNOW='' then '自知力不全' when bb.SELFKNOW='' then '自知力缺失' end as SELFKNOW,
case when bb.SLEEP='' then '良好' when bb.SLEEP='' then '一般' when bb.SLEEP='' then '较差' end as SLEEP,
case when bb.EATING='' then '良好' when bb.EATING='' then '一般' when bb.EATING='' then '较差' end as EATING,
case when bb.PERSONALLIFE='' then '良好' when bb.PERSONALLIFE='' then '一般' when bb.PERSONALLIFE='' then '较差' end as PERSONALLIFE,
case when bb.FAMILY='' then '良好' when bb.FAMILY='' then '一般' when bb.FAMILY='' then '较差' end as FAMILY,
case when bb.PRODUCTWROK='' then '良好' when bb.PRODUCTWROK='' then '一般' when bb.PRODUCTWROK='' then '较差' end as PRODUCTWROK,
case when bb.STUDY='' then '良好' when bb.STUDY='' then '一般' when bb.STUDY='' then '较差' end as STUDY,
case when bb.SOCIAL='' then '良好' when bb.SOCIAL='' then '一般' when bb.SOCIAL='' then '较差' end as SOCIAL,
bb.VISITDOCTOR,
case when (select Count(*) from MB_Autograph where Sfid=bb.mentalvisitid and Sf_type ='kf_mentalvisit')=1 then '电子签名' else '' end as DZQM,
bb.HZJSQM,
ROW_NUMBER() OVER(PARTITION BY aa.personid ORDER BY bb.Mentalvisitid DESC) RNO from (SELECT PERSONID,
TOWNNAME,
PERSONCODE,
PNAME,
PHONENO,
BIRTHDAY,
RESIDENCEADDRESS,
CREATEDATE,
GENDERCODE,
GENDERNAME,
DISEASE1,
DISDATE1,
DISEASE2,
DISDATE2,
DISEASE3,
DISDATE3,
DISEASE4,
DISDATE4,
DISEASE5,
DISDATE5,
DISEASE6,
DISDATE6,
IDCARDNO,VILLAGENAME,relationname,
(SELECT COUNT(A.MENTALVISITID)
FROM KF_MENTALVISIT A
WHERE A.PERSONID = P.PERSONID
AND A.ISDELETED = '' and Visitdate >= to_date('2015-05-14','yyyy-MM-dd') and Visitdate <= to_date('2018-07-24','yyyy-MM-dd')) AS VISITEDTIMES,
(SELECT B.RELATION
FROM KF_MENTAL B
WHERE B.ISDELETED = ''
AND B.PERSONID = P.PERSONID
AND ROWNUM <= 1) AS RELATION,
(SELECT B.LOCKSITUATION
FROM KF_MENTAL B
WHERE B.ISDELETED = ''
AND B.PERSONID = P.PERSONID
AND ROWNUM <= 1) AS LOCKSITUATION,
(SELECT B.RECENTDIAGNOSE
FROM KF_MENTAL B
WHERE B.ISDELETED = ''
AND B.PERSONID = P.PERSONID
AND ROWNUM <= 1) AS RECENTDIAGNOSE,
(SELECT GUARDIAN
FROM KF_MENTAL B
WHERE B.ISDELETED = ''
AND B.PERSONID = P.PERSONID
AND ROWNUM <= 1) AS GUARDIAN,
(SELECT FIRSTTIME
FROM KF_MENTAL B
WHERE B.ISDELETED = ''
AND B.PERSONID = P.PERSONID
AND ROWNUM <= 1) AS FIRSTTIME,ROW_NUMBER() OVER(ORDER BY PERSONCODE DESC) AS RN
FROM DAGL_PERSON P WHERE p.isdeleted = ''
and p.status = '正常'
and p.diseasecode like '%,8,%' and ( p.villagecode like '370783%' ) and ( p.villagecode like '370783112%' ) and (select count(t.MENTALVISITID) as visitedTimes
from KF_MENTALVISIT t
where t.isdeleted = '' and t.personid = p.personid and Visitdate >= to_date('2015-05-14','yyyy-MM-dd') and Visitdate <= to_date('2018-07-24','yyyy-MM-dd')) >= 1 and exists(select 1 from kf_mental where kf_mental.personid=p.personid) ) aa left join kf_mentalvisit bb ON aa.personid = bb.personid)C
where 1=1 and Visitdate >= to_date('2015-05-14','yyyy-MM-dd') and Visitdate <= to_date('2017-07-24','yyyy-MM-dd')

解析:

1.Case When Then end

 添加的 if else的逻辑

2. wm_concat()   , wm_concat(to_char())

  多条记录合并成一条,类似于for

3.  ||   拼接字符串用

  类似于操作符了

4. () 可以连表查字段

  类似于函数执行一部分操作

5.PARTITION BY ... ORDER BY ... DESC

  多表合并时使用的操作

6.where 条件中  exists()

7.left join  on  注意小括号的使用


sql 应用记录的更多相关文章

  1. SQL重复记录处理(查找,过滤,删除)

    SQL重复记录处理(查找,过滤,删除)     ID int    Title nvarchar(50)    AddDate datetime    数据  www.2cto.com     ID ...

  2. Yii2如何添加sql日志记录的配置信息

    在使用Yii2框架的时候,常常会出现没有sql日志记录的问题.在代码里一句一句的打印sql语句也不现实.所以就要用文件记录起来. 在 config/web.php 里面的 log配置中增加如下配置 [ ...

  3. EF Core3.0+ 通过拦截器实现读写分离与SQL日志记录

    前言 本文主要是讲解EF Core3.0+ 通过拦截器实现读写分离与SQL日志记录 注意拦截器只有EF Core3.0+ 支持,2.1请考虑上下文工厂的形式实现. 说点题外话.. 一晃又大半年没更新技 ...

  4. 如何在MySql中记录SQL日志记录

    My SQL可以用下面方法跟踪sql 语句,以下方法以Windows平台为例,linux雷同:   1  配置my.ini文件(在安装目录,linux下文件名为my.cnf     查找到[mysql ...

  5. SQL学习记录

    一些最重要的 SQL 命令 SELECT - 从数据库中提取数据 UPDATE - 更新数据库中的数据 DELETE - 从数据库中删除数据 INSERT INTO - 向数据库中插入新数据 CREA ...

  6. phalcon: plugin 结合Manager事件管理、dispatcher调度控制器 监听sql日志记录或其他拦截出来

    可能用到的类 phalcon\mvc\use\plugin Phalcon\Mvc\Dispatcher as MvcDispatcher Phalcon\Events\Manager as Even ...

  7. SQL查询记录添加序号(HANA)

    语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) row_number() OVER() 从1开始,为每一条分组记录返回一个数字,这里 ...

  8. SQL检索记录

    <<第一章检索记录>>:关于表使用SELECT语句和特殊字符"*": *:SELECT * from emp; 1:分别列出每一行:SELECT empno ...

  9. SQL 问题记录

    今天在处理SQL的时候遇到几个问题: 1.如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中 select distinct id from 收费站 ...

  10. sql知识点记录

    order by就是排序. group by就是分组. WHERE语句在GROUP BY语句之前:SQL会在分组之前计算WHERE语句.    HAVING语句在GROUP BY语句之后:SQL会在分 ...

随机推荐

  1. ECMAScript 6基础

    ECMAScript 和 JavaScript 是什么关系? 1996 年 11 月,JavaScript 的创造者 Netscape 公司,希望JavaScript能够成为国际标准,将其提交给标准化 ...

  2. ES读写数据过程及原理

    ES读写数据过程及原理 倒排索引 首先来了解一下什么是倒排索引 倒排索引,就是建立词语与文档的对应关系(词语在什么文档出现,出现了多少次,在什么位置出现) 搜索的时候,根据搜索关键词,直接在索引中找到 ...

  3. kafka消费服务调优

    1.消费服务速度跟不上 2.top -H 观察是哪个线程最忙 3.多次使用jstack,看看最忙的那个线程在做什么

  4. 小白的java学习之路 “ 循环结构(二)”

    一.for 循环 语法: for(表达式一;表达式二;表达式三){ 循环操作 } 表达式一:参数初始化 表达式二:条件判断 表达式三:更新循环变量 执行流程: 步骤一:执行表达式一.初始化参数 步骤二 ...

  5. Android中的消息处理机制

    安卓中的消息处理机制主要涉及到5个概念 (1)消息类:Message,可以理解成一个数据单元: (2)消息队列类:Message Queue,存放通过Hander发布的消息,处理顺序类似于队列,按照先 ...

  6. 885.求组合数 I(模板)

    O(n^2) 数据范围 a*b =4e6  根据组合数公式: 代码: import java.util.Scanner; public class Main{ static final int N=2 ...

  7. 作业day2

    问题一: Java类中只能有一个公有类吗?用Eclipse检测以下程序是否正确.是否在接口中同样适用. 因为公共类名必须和这个java源程序文件名相同,所以只能有一个公共类,相应的,main方法作为程 ...

  8. win10系统家庭版升级到专业版

    win10家庭版升级专业版密钥:VK7JG-NPHTM-C97JM-9MPGT-3V66T4N7JM-CV98F-WY9XX-9D8CF-369TT FMPND-XFTD4-67FJC-HDR8C-3 ...

  9. PAT (Basic Level) Practice (中文)1038 统计同成绩学生 (20 分)

    本题要求读入 N 名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式: 输入在第 1 行给出不超过 1 的正整数 N,即学生总人数.随后一行给出 N 名学生的百分制整数成绩,中间以空格分隔.最 ...

  10. SAP 登录Fiori的user和登录WEB UI的business role之间的关系。

    SAP 登录FIORI的user 会被assign 一些控制前端app显示的business role(是一些PFCG role的集合),该business role和登录web ui选择的S4C_S ...