CASE

,D.[Score] B_Score
,'Distince'=
CASE
WHEN C.Score > D.Score THEN C.[Score] - D.[Score]
WHEN C.Score < D.Score THEN D.[Score] - C.[Score]
ELSE 0
END
FROM [tbiz_AssScoreAction] C
INNER JOIN [tbiz_AssScoreAction] D
ON C.QuestionID =D.QuestionID AND (C.RelationID -30) = D.RelationID
WHERE C.RelationID=30 AND C.ProjectID=65 AND C.PersonID=2430
--等价语法
,D.[Score] - C.Score Ta_Zi
,CASE
WHEN C.[Score] > D.[Score] THEN C.[Score] - D.[Score]
WHEN C.[Score] < D.[Score] THEN D.[Score] - C.[Score]
ELSE 0
END AS Distince

CASE 判断 NULL的情况

CASE WHEN [ReadState] IS NULL OR [ReadState]=0  THEN '未读' ELSE '已读'  END AS ReadStateName
SELECT CASE Type_No
WHEN 2 THEN Customer_No
WHEN 4 THEN Customer_No
WHEN 10 THEN Customer_No
WHEN 11 THEN Customer_No
WHEN 3 THEN Organization_Name
WHEN 5 THEN Organization_Name
END AS Customer_No
FROM [Lx_Finance_Transfer_ForNC]

SELECT
A.TESTID,
A.SCALEID,
B.NAME,
B.COUNT,
B.ASSTIME,
A.STATE,
CASE
WHEN A.MATCH IS NULL THEN
0 ELSE CAST (A.MATCH AS NUMERIC ( 26, 2 ))
END AS MATCH
FROM
TD_TEST_INFO A
JOIN ASS_SCALE B ON A.SCALEID= B.SCALEID

JOIN

SELECT T.Id,T.pingZhengNum FROM Lx_Finance_Transfer_ForNC T
LEFT JOIN Lx_Finance_Flow_ForNC F ON T.Id=F.PingZhengId

LEFT JOIN

解读:尽管主档表T只有1条记录,但是在分档表中有2条记录与之关联,所以SELECT结果集有2条.

SELECT T.Id T_Id,T.pingZhengNum,F.* FROM Lx_Finance_Transfer_ForNC T
INNER JOIN Lx_Finance_Flow_ForNC F ON T.Id=F.PingZhengId
-- 效果和LEFT JOIN 一样

RIGHT JOIN

解读:T表从RIGHT链接F表,SQL引擎会保留F表中所有记录

自连接

SELECT  A.* ,
B.RelationName ,
B.Score T_Score ,
B.ID T_ID
FROM [tbiz_AssScoreWeidu] A
INNER JOIN [tbiz_AssScoreWeidu] B
ON A.WeiduNo = B.WeiduNo AND A.RelationID = B.RelationID + 30
WHERE A.ProjectID = 65
AND A.PersonID = 2430
AND ( A.RelationID = 30 OR B.RelationID = 0 )
AND A.WeiduNo = 'C211-13'

自链接+WHERE条件

SELECT  A.DictItemID ,
B.ItemName ParentItemName ,
A.ItemType ,
A.ItemName ,
A.ItemCode ,
A.CreatedBy ,
A.IsDelete
FROM tcfg_DictItem A
LEFT JOIN tcfg_DictItem B ON B.DictItemID = A.ParentID
WHERE A.ParentID != 0

一对多关系JOIN一行

SELECT *
FROM (
SELECT A.Id
,A.PingZhengNum
,A.CRT_Date
,A.[Enabled]
,B.Id FlowId
,B.Type_No_Name
,B.VouchType
,ROW_NUMBER() OVER
(
PARTITION BY A.Id
ORDER BY B.CRT_Date
)
AS rn
FROM [Lx_Finance_Transfer_ForNC] A LEFT OUTER JOIN dbo.Lx_Finance_Flow_ForNC B
ON A.Id=B.PingZhengId
) m
WHERE rn=1

解读:主档表记录多,分档表记录少,参考

方案二

SELECT A.Id
,A.PingZhengNum
,A.CRT_Date
,A.[Enabled]
,B.Id FlowId
,B.Type_No_Name
,B.VouchType
FROM [Lx_Finance_Transfer_ForNC] A
OUTER APPLY
(
SELECT TOP 1 *
FROM Lx_Finance_Flow_ForNC C
WHERE PingZhengId = A.Id
ORDER BY CRT_Date DESC
) B

ROW_NUMBER() OVER(....) AS Xxx

SELECT  [PersonID] ,
ROW_NUMBER() OVER
(
ORDER BY A.Id
) AS RowID
FROM [tbiz_AssScore] A

简单的说row_number()从1开始,为每一条"分组"记录返回一个数字,分组对应关键词PARTITION BY XXX,为可选关键词

当出现GROUP BY 子句时,GROUP BY会影响到ROW_NUMBER()中的字段,如下面的第5行

 SELECT  [PersonID] ,
AVG([Score]) AVG_Score,
ROW_NUMBER() OVER
(
ORDER BY A.PersonID
) AS RowID
FROM [tbiz_AssScore] A
GROUP BY PersonID
ORDER BY AVG_Score

PARTITION BY 子句 + ROW_NUMBER() OVER(....) AS rn

PARTITION BY 理解成"分组"

SELECT * FROM(
SELECT C.[ID]
,D.ID BID
,C.[ProjectID]
,C.[PersonID]
,C.[QuestionID]
,C.[QuestionName]
,C.[WeiduNo]
,C.[WeiduNAME]
,C.[RelationID]
,C.[RelationName]
,C.[Score]
,D.RelationName B_RelationName
,D.[Score] B_Score
,D.[Score] - C.Score Ta_Zi
,ROW_NUMBER() OVER
(
PARTITION BY D.ID,C.[ProjectID],C.[PersonID],C.[QuestionID]
ORDER BY C.[ID]
)
AS rn
FROM [tbiz_AssScoreAction] C
INNER JOIN [tbiz_AssScoreAction] D
ON C.QuestionID = D.QuestionID AND (C.RelationID -30) = D.RelationID
WHERE C.RelationID=30 AND C.ProjectID=65 AND C.PersonID=2430
) m WHERE rn = 1 ORDER BY Ta_Zi

DECLARE

DECLARE @MedicalInstitutionID VARCHAR(max) SET @MedicalInstitutionID='SYS20130228000000012'
DECLARE @ResidentCardID VARCHAR(max) SET @ResidentCardID=NULL
DECLARE @Name VARCHAR(max) SET @Name=NULL
DECLARE @InDateLeft DATETIME SET @InDateLeft=NULL
DECLARE @InDateRight DATETIME SET @InDateRight=NULL
DECLARE @AcceptsOperatorID VARCHAR(max) SET @AcceptsOperatorID=NULL
DECLARE @AcceptsOperatorName VARCHAR(max) SET @AcceptsOperatorName=NULL
DECLARE @IsPrint INT SET @IsPrint=null

SQL/T-SQL实例参考-2

SQL/T-SQL实例参考的更多相关文章

  1. SQL/T-SQL实例参考-2

    对多关联查询,查询多中的记录,但是返回一的结果集 子查询语法 --一对多关联查询,查询多中的记录,但是返回一的结果集 SELECT C.* FROM ( SELECT A.BasicID FROM [ ...

  2. SQL/T-SQL实例参考-1

    CASE ,D.[Score] B_Score ,'Distince'= CASE WHEN C.Score > D.Score THEN C.[Score] - D.[Score] WHEN ...

  3. SQL Server的实例恢复解析

    同Oracle一样,SQL Server在非一致性关闭的时候也会进行实例恢复(Instance Recovery),本文根据stack overflow的文章介绍一些SQL Server实例恢复的知识 ...

  4. SQL群集多实例卸载、安装

    安装SQL多实例群集: 准备工作:准备SQL群集管理员及服务账号:sqladmin和srv-sql,sqladmin和srv-sql都属于群集节点计算机的administrators组 预留群集名称账 ...

  5. SQL Server 多实例下的复制

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建步骤(Procedure) 注意事项(Attention) 二.背景(Contexts) ...

  6. 在线API,桌面版,jquery,css,Android中文开发文档,JScript,SQL掌用实例

    学习帮助文档大全 jquery,css,Android中文开发文档,JScript,SQL掌用实例 http://api.jq-school.com/

  7. 当SQL Server的实例位于集群的特定节点时,数据库无法远程访问

    搭建好了一个集群环境,发现当SQL Server的实例位于集群的其中一个节点时,数据库无法远程访问,报如下错误.但在另一个 节点时,数据库访问正常. 标题: 连接到服务器 -------------- ...

  8. Delphi调用SQL分页存储过程实例

    Delphi调用SQL分页存储过程实例 (-- ::)转载▼ 标签: it 分类: Delphi相关 //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程 //----分页存 ...

  9. Step7:SQL Server 多实例下的复制

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建步骤(Procedure) 注意事项(Attention) 二.背景(Contexts) ...

随机推荐

  1. Linux 进程间通讯详解二

    消息队列 --消息队列提供了本机上从一个进程向另外一个进程发送一块数据的方法 --每个数据块都被认为有一个类型,接收者进程接收的数据块可以有不同的类型值 --消息队列也有管道一样的不足,就是每个消息的 ...

  2. Mobile Safari调用本地App, 否则进入App Store下载

    需求: 如何让用户通过手机浏览器(Mobile Safari),访问一个URL就能直接打开ios上的App应用,如果该应用没有安装,那么直接跳转到App Store的App下载页面. 准备工作 ios ...

  3. Nginx负载均衡实践之一:基本实现

    由于现在的网站架构越来越大,基于互联网的用户也是日渐增长,所以传统的单机版服务器已经渐渐不能适应时代发展的需要.最近在和其他企业接触的过程中,发现对于互联网的经验尤为看重,所谓的互联网经验,其实就是指 ...

  4. 物联网(莹石云)WIFI一键配置原理分析(zz)

    最近打算做一款自己的无线传输模块用来实现光伏电站的数据接入,希望可以尽量简化接入流程,其中wifi密码的配置就是一个比较麻烦的事情,想到最近使用萤石摄像头时,wifi密码配置似乎很简单,他们是怎么做到 ...

  5. testng 6.8.6 eclipse plugin

    http://files.cnblogs.com/mikelij/testng.zip

  6. python实现计算器

    计算器功能 实现优先级解析,加减乘除四则运算 自定义小数位精度 实现思想: 先找到最里层括号,根据乘除,加减优先级,调用写好的乘除.加减运算函数算出括号内总值,再将原括号式用所得值替换,此过程循环进行 ...

  7. 添加native service

    原文地址:http://blog.csdn.net/zhx6044/article/details/47342227 Native Service 其实就是一个 linux 守护进程,提供一些服务,不 ...

  8. 【原创】cs+html+js+css模式(七): 顺序执行与并发执行问题,IIS7及其以上版本的抛错问题解决

          在进行开发的过程中,针对于这种模式,我们继承的IRequiresSessionState,这种对于我们的同一个IIS的执行中是顺序执行即一个ajax请求处理完成后,才能执行下一个ajax, ...

  9. Java研发方向如何准备BAT技术面试答案(上)

    http://blog.csdn.net/q979392157/article/details/52164319 阿里面试题总结 http://blog.csdn.net/q979392157/art ...

  10. delphi 默认值

    只有全局变量才可以赋初值 i:integer=0;