SQL 查询中case的运用
适用场景: 需要根据现有字段经过一定条件得到新的查询字段
相关语法: CASE WHEN 条件1 TEHN 结果1 WHEN 条件2 THEN 结果2 ...... ELSE 结果N END 练习代码:
SELECT * ,
( '评分: <span style=''font-weight:bold''>' + INFO.CMScore + '</span><br/>评级: <span style=''font-weight:bold''>' + INFO.CMGrade+'</span>' ) AS CMEvaluate ,
( '评分: <span style=''font-weight:bold''>' + INFO.ExamScore + '</span><br/>评级: <span style=''font-weight:bold''>' + INFO.ExamGrade+'</span>' ) AS ExamEvaluate
FROM ( SELECT dbo.LB_Project.LB_Pro_ID , dbo.LB_Project.BD_ID , LB_Project.LB_Pro_Code ,
-- ISNULL((SELECT TOP 1 Emp_Name FROM dbo.IC_Employee WHERE Emp_ID=dbo.LB_Porject_ScoreCard.Emp_ID_Report),'- -') AS ReportEmp,
-- ISNULL((SELECT TOP 1 Emp_Name FROM dbo.IC_Employee WHERE Emp_ID=dbo.LB_Porject_ScoreCard.Emp_ID_Exam),'- -') AS ExamEmp,
(SELECT TOP 1 BDName FROM dbo.Busi_Definition WHERE BD_ID = dbo.LB_Project.BD_ID ) AS BDName ,
(SELECT TOP 1 BDCode FROM dbo.Busi_Definition WHERE BD_ID = dbo.LB_Project.BD_ID ) AS BDCode ,
dbo.LB_Project.Cust_ID ,
(SELECT TOP 1 Cust_Name FROM dbo.Cust_Main WHERE Cust_ID = dbo.LB_Project.Cust_ID) AS CustName ,
(SELECT TOP 1 IDCard FROM dbo.Cust_Main WHERE Cust_ID = dbo.LB_Project.Cust_ID) AS CustIDCard ,
--dbo.LB_Project.Dept_ID ,
(SELECT TOP 1 Dept_Name FROM dbo.IC_Departments WHERE Dept_ID = LB_Project.Dept_ID) AS DeptName ,
dbo.LB_Project.Emp_ID_ZB ,
(SELECT TOP 1 Emp_Name FROM dbo.IC_Employee WHERE Emp_ID = LB_Project.Emp_ID_ZB ) AS EmpName_ZB ,
dbo.LB_Project.Emp_ID_XB ,
(SELECT TOP 1 Emp_Name FROM dbo.IC_Employee WHERE Emp_ID = LB_Project.Emp_ID_XB ) AS EmpName_XB ,
dbo.LB_Project.LoanAmount ,
--dbo.LB_Project.TermValue ,
--dbo.LB_Project.LoanUses ,
--dbo.LB_Project.TermUnit ,
(CAST(TermValue AS NVARCHAR(10)) + ( CASE TermUnit WHEN '月' THEN '个' + TermUnit ELSE TermUnit END ) ) AS Term ,
(CAST(CAST(RateValue AS DECIMAL(6,2)) AS NVARCHAR(10)) + '%/' + RateUnit ) AS Rate ,
--dbo.LB_Project.RateValue , dbo.LB_Project.RateUnit , dbo.LB_Project.RM_ID ,
(SELECT TOP 1 RM_Name FROM dbo.Set_RepayMent WHERE RM_ID = LB_Project.RM_ID) AS RMName ,
--dbo.LB_Project.GM_ID ,
(SELECT '['+GM_Name+']' FROM dbo.Set_GuaranteeMethod WHERE GM_ID IN (SELECT Value FROM dbo.SplitString(LB_Project.GM_ID,',',1) ) FOR XML PATH('')) AS GMName ,
--dbo.LB_Project.VerifyStatus ,
dbo.LB_Project.CreateTime ,
dbo.LB_Project.Status ,
(CASE dbo.LB_Project.Status WHEN 0 THEN '待确认' WHEN 1 THEN '待复核' WHEN 2 THEN '已评分' ELSE '- -' END ) StatusName ,
--dbo.LB_Project_JRWPFD.LB_Pro_JP_ID ,
--dbo.LB_Project_JRWPFD.MM_ID ,
(CASE WHEN EXISTS(SELECT 1 FROM dbo.Busi_Definition WHERE BD_ID=dbo.LB_Project.BD_ID AND BDCode='BD_CODE_JRWPFD')
THEN (SELECT TOP 1 MM_Name FROM dbo.Market_Main WHERE MM_ID = LB_Project_JRWPFD.MM_ID)
WHEN EXISTS(SELECT 1 FROM dbo.Busi_Definition WHERE BD_ID=dbo.LB_Project.BD_ID AND BDCode='BD_CODE_ZHLGCYD')
THEN (SELECT TOP 1 MarketName FROM dbo.LB_Project_ZHLGCYD) ELSE '- -' END ) AS MMName ,
--dbo.LB_Project_JRWPFD.S_BC_ID ,
(CASE WHEN EXISTS(SELECT 1 FROM dbo.Busi_Definition WHERE BD_ID=dbo.LB_Project.BD_ID AND BDCode='BD_CODE_JRWPFD')
THEN (SELECT TOP 1 Name FROM dbo.Set_BusinessCategory WHERE S_BC_ID = dbo.LB_Project_JRWPFD.S_BC_ID)
WHEN EXISTS(SELECT 1 FROM dbo.Busi_Definition WHERE BD_ID=dbo.LB_Project.BD_ID AND BDCode='BD_CODE_ZHLGCYD')
THEN (SELECT TOP 1 CategoryArea FROM dbo.LB_Project_ZHLGCYD) ELSE '- -' END) AS CateGoryName ,
--dbo.LB_Project_JRWPFD.Paving ,
--dbo.LB_Project_JRWPFD.ValuationDetail ,
--dbo.LB_Project_JRWPFD.Valuation ,
(CASE WHEN dbo.LB_Project.Status = 2 THEN CONVERT(NVARCHAR(10), dbo.LB_Porject_ScoreCard.ExamScore)
ELSE '- -' END ) AS ExamScore ,
(CASE WHEN LB_Porject_ScoreCard.Status = 2 THEN ISNULL(( SELECT TOP 1 GSName FROM ( SELECT GSName FROM dbo.SC_GradeStandard
WHERE Status = 0 AND LB_Porject_ScoreCard.ExamScore BETWEEN MinValue AND MaxValue AND SC_ID = dbo.LB_Porject_ScoreCard.SC_ID) INFO
WHERE INFO.GSName <> '' ), '- -') ELSE '- -' END ) AS ExamGrade ,
(CASE WHEN dbo.LB_Project.Status > 0 THEN CONVERT(NVARCHAR(10), dbo.LB_Porject_ScoreCard.ReportScore) ELSE '- -' END ) AS CMScore ,
(CASE WHEN LB_Porject_ScoreCard.Status > 0 THEN ISNULL(( SELECT TOP 1 GSName FROM ( SELECT GSName FROM dbo.SC_GradeStandard
WHERE Status = 0 AND LB_Porject_ScoreCard.ReportScore BETWEEN MinValue AND MaxValue AND SC_ID = dbo.LB_Porject_ScoreCard.SC_ID) INFO
WHERE INFO.GSName <> '' ), '- -') ELSE '- -' END ) AS CMGrade FROM dbo.LB_Project
LEFT JOIN dbo.LB_Porject_ScoreCard ON LB_Porject_ScoreCard.LB_Pro_ID = LB_Project.LB_Pro_ID
LEFT OUTER JOIN dbo.LB_Project_JRWPFD ON dbo.LB_Project_JRWPFD.LB_Pro_ID = dbo.LB_Project.LB_Pro_ID
LEFT JOIN dbo.LB_Project_ZHLGCYD ON LB_Project_ZHLGCYD.LB_Pro_ID = LB_Project.LB_Pro_ID) INFO;
SQL 查询中case的运用的更多相关文章
- SQL查询中in、exists、not in、not exists的用法与区别
1.in和exists in是把外表和内表作hash(字典集合)连接,而exists是对外表作循环,每次循环再对内表进行查询.一直以来认为exists比in效率高的说法是不准确的,如果查询的两个表大小 ...
- SQL查询中关键词的执行顺序
写在前面:最近的工作主要是写SQL脚本,在编写过程中对SQL的执行和解析过程特别混乱不清,造成了想优化却无从下手.为此专门在网上找博文学习,并做了如下总结. 1.查询中常用到的关键词有: SELECT ...
- 在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考。
转载https://www.cnblogs.com/zhang-bo/p/9138151.html 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建 ...
- SQL查询中关键字的执行顺序
SQL语句中的每个关键字都按照顺序往下执行,而每一步操作会生成一个临时表,最后的临时表就是最终结果: FROM <left_table>:from子句返回初始结果集 <join_ty ...
- SQL 查询中not in 与 not exists 的区别
1.in和exists in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询,一直以来认为exists比in效率高的说法是不准确的.如果查询的两个表 ...
- sql server中case when的用法
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- Oracle的sql语句中case关键字的用法 & 单双引号的使用
关于sql中单引号和双引号的使用,来一点说明: 1. 查询列的别名如果含有汉字或者特殊字符(如以'_'开头),需要用双引号引起来.而且只能用双引号,单引号是不可以的. 2. 如果想让某列返回固定的值, ...
- SQL查询中连接--学习
一.开头说 不出意外,还是先说下SQL中所有的联接类型: 内连接.外连接(左连接.右连接 .全连接).交叉连接 然后接下来就是依次学习下各种连接的使用效果 二.各种连接秀 首先准备两张表 学生表: ...
- SQL语句中case函数
case函数,严格的意义上来讲case函数已经试流程控制语句了,不是简单意义上的函数,不过为了方便,很多人将case函数称为流程控制函数. case函数的一般有两种用法:1.case expressi ...
随机推荐
- python3 树莓派 + usb摄像头 做颜色识别 二维码识别
今天又啥也没干 我完蛋了哦 就是没办法沉下心来,咋办....还是先来条NLP吧.. 七,凡事必有至少三个解决方法 对事情只有一个方法的人,必陷入困境,因为别无选择. 对事情有两个方法的人也陷入困境, ...
- IDEA zookeeper插件的使用
安装插件 file-settings-Plugins 搜索zookeeper,并安装,安装完成后重启IDEA 配置IP地址和端口 位于Other settings 中的zookeeper选项中配置 注 ...
- 不带parent指针的successor求解
问题: 请设计一个算法,寻找二叉树中指定结点的下一个结点(即中序遍历的后继).给定树的根结点指针TreeNode* root和结点的值int p,请返回值为p的结点的后继结点的值.保证结点的值大于等于 ...
- 2020考研-必须了解的干货"极限微分和你说的悄悄话"
极限微分和你说的悄悄话 2019-03-02 RunWsh 美食供应商有考研学子 想必接触过数学或物理的都对牛顿和莱布尼兹不陌生.如果你是考研大军中的一员,估计天天会与他们眉来眼去的吧! 牛顿莱布:别 ...
- ToolbarDemo【Toolbar作为顶部导航栏的简单使用】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 简单记录ToolBar作为导航栏的使用.关键点在于如何在dialogfragment中使用toolbar! Toolbar的图标.标 ...
- NodeJs之邮件(email)发送
NodeJs之邮件(email)发送 一,介绍与需求 1.1,介绍 1,Nodemailer简介 Nodemailer是一个简单易用的Node.js邮件发送插件 github地址 Nodemailer ...
- MySQL via EF6 的试用报告
1.如何通过 EF6 来连接 MySQL? 2.如何通过 EF6 来实现 CRUD? 2.1.Create 添加 2.2.Retrieve 查询 2.3.Update 修改 2.4.Delete 删除 ...
- SLAM+语音机器人DIY系列:(一)Linux基础——1.Linux简介
摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...
- sublime text3插件增强侧边栏的功能文件的复制粘贴
快捷键ctrl + shift +p 输入 install package 回车,调出插件搜索器, 在搜索栏中输入 SideBarEnhancements 回车安装插件. 在侧边栏中的各种操作功能增 ...
- [转]Node.js 应用:Koa2 使用 JWT 进行鉴权
本文转自:https://www.cnblogs.com/linxin/p/9491342.html 前言 在前后端分离的开发中,通过 Restful API 进行数据交互时,如果没有对 API 进行 ...