小编在做组织部维护最后收尾工作的时候,遇到了这样一个问题,须要将定性考核得分查出来、定量考核相应的数据查出来并进行得分计算、附加分查出来,最后将这三部分信息汇总之后得到总成绩,假设当中一项成绩没有进行计算那么是能够得到成绩的。

    展望师哥他们曾经的逻辑。通过两个视图将定性和定量得分计算保存之后。再用一个视图将三个得分连到一起并进行计算。

    被组长规定仅仅能用SQL语句来写,由于这样维护起来就非常方便了。

我開始先用了级联查询并计算,但是效果并不太理想。最后了解到连接查询,经过重复试验,最终有了下面成果:

<span style="font-family:KaiTi_GB2312;font-size:18px;">--
SELECT
--总排名
ROW_NUMBER() OVER(ORDER BY ISNULL((h.AdditionalResults),0) + f.TotalScores ) AS 总排名 ,
--园区ID
f.ObjectID AS 市直单位id,
--园区名称
f.Responsibility AS 开发区园区名称,
--年份
f.YearTime AS 年份,
--定量总得分
f.QuantifyScores as 定量总得分,
--附加分
ISNULL((h.AdditionalResults),0) AS 奖惩总得分,
--最总定量+定性+附加总分
ISNULL((h.AdditionalResults),0) + f.TotalScores AS 总得分
from
--汇总,通过左链接链接之后,查询以下信息,并将定性和定量总得分汇总
(SELECT
--园区ID
c.ObjectID,
--园区名称
c.Responsibility,
--年份
e.YearTime,
--定量总得分
ISNULL((c.QuantifyScores),0) AS QuantifyScores,
--定性定量总得分
ISNULL((e.CalculateScores),0) + ISNULL((c.QuantifyScores),0) AS TotalScores
FROM
--第一层查询,查询到定性总得分当成基表
(SELECT
--园区ID
d.DevelopmentID,
--考核时间
d.YearTime,
--定性总得分
d.CalculateScores
FROM
T_DevelopmentScores d) e
--和第一层并列的查询,查询到定量信息并计算出定量总分
left JOIN
(SELECT
--园区ID
a.ObjectID,
--园区名称
a.Responsibility,
--计算并显示定量总得分
ISNULL(CAST(a.score AS real), 0)*ISNULL(CAST(b.Weight AS real), 0) / 100 AS QuantifyScores
FROM
T_DevelopmentQuantifyScores a,
T_DevelopmentQuantifyTarget b
WHERE a.TragetID = b.TragetID ) c ON e.DevelopmentID = c.ObjectID) f
--和定量定性得分汇总并列,通过左链接查询到以下附加分
LEFT JOIN
(SELECT
--园区ID
g.DevelopmentID,
--附加分
g.AdditionalResults
FROM
T_DevelopmentAdditionalResults g) h ON f.ObjectID = h.DevelopmentID</span>

尝到了SQL语句中连接的甜头,于是小编在网上搜索之后并自己实践,有了以下成果:

举例介绍

以下的内容介绍将会分别用以下两个表进行试验

外连接

左连接(left join或者left outer join):

说明:以左表为基础,查询右表中全部符合条件的信息,不存在的用Null补充

<span style="font-family:KaiTi_GB2312;font-size:18px;">--
SELECT * FROM dbo.Testtable1 a LEFT JOIN dbo.TestTable2 b ON a.Hobbyid = b.Hobbyid</span>


结果例如以下:

右连接(right join或者right outer join)

说明:以右表为基础,查询左表中全部符合条件的信息,不存在的用Null补充

<span style="font-family:KaiTi_GB2312;font-size:18px;">--
SELECT * FROM dbo.Testtable1 a right JOIN dbo.TestTable2 b ON a.Hobbyid = b.Hobbyid</span>


结果例如以下:

全然连接(full join或者full outer join)

说明:将两个表中的信息都查出来,没有相应的信息,用Null补充

<span style="font-family:KaiTi_GB2312;font-size:18px;">--
SELECT * FROM dbo.Testtable1 a full JOIN dbo.TestTable2 b ON a.Hobbyid = b.Hobbyid</span>


结果例如以下:

内连接(inner join)

说明:仅仅显示符合条件的信息,条件能够是(=、<、>、<>、<=、>=、!<、!>),以下仅仅介绍条件为=的内容

<span style="font-family:KaiTi_GB2312;font-size:18px;">--
SELECT * FROM dbo.Testtable1 a inner JOIN dbo.TestTable2 b ON a.Hobbyid = b.Hobbyid</span>


结果例如以下:

交叉连接(cross join)

无条件

说明:将查到两个表中的全部数据的乘积(假设每一个表中都有3行数据,最后显示3*3=9行数据)

<span style="font-family:KaiTi_GB2312;font-size:18px;">--
SELECT * FROM dbo.Testtable1 cross JOIN dbo.TestTable2
--上面与以下的语句等价
SELECT * FROM dbo.Testtable1, dbo.TestTable2</span>


结果例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

有条件

说明:将上面查到的无条件的结果依照条件进行筛选可是这里仅仅能用where表示不能用on表示

<span style="font-family:KaiTi_GB2312;font-size:18px;">--
SELECT * FROM dbo.Testtable1 a cross JOIN dbo.TestTable2 b WHERE a.Hobbyid = b.Hobbyid</span>


结果例如以下:

总结

小编将这句话送给自己以及全部的读者:

    在将来的路上,了解一块东西就将它的来龙去脉缕个通,并进行总结,这样以后的路将会更加通畅!

SQL Server外连接、内连接、交叉连接的更多相关文章

  1. 全面解析SQL SERVER 的左右内连接

    SQL SERVER数据库的三种常用连接解析: 这里先给出一个官方的解释: left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右 ...

  2. 【SQL】连接 —— 内连接、外连接、左连接、右连接、交叉连接

    连接 · 内连接 · 外连接 · 左连接 · 右连接 · 全连接 · 交叉连接 · 匹配符号(+)  连接  根据表之间的关系,呈现跨表查询的结果.     外连接     内连接 左连接 右连接 全 ...

  3. SQL Server DAC——专用管理员连接

    今天打开数据库刚要连接时,看到“连接到服务器”窗口,突发的想到:要是SQL Server 不再响应正常的连接请求,又想使用数据库时,我们该怎么办?      其实我们还能通过“SQL Server D ...

  4. JDBC与SQL SERVER各个版本的连接方法

    转至:blog.csdn.net/ying5420/article/details/4488246 1.SQL SERVER 2000 JDBC驱动程序:msbase.jar.mssqlserver. ...

  5. 解决SQL Server管理器无法连接远程数据库Error: 1326错误

    解决SQL Server管理器无法连接远程数据库Error: 1326错误 我们在在使用SQL Server时都会遇到使用SQL Server Management Studio无法连接远程数据库实例 ...

  6. SQL Server 2005无法远程连接的解决方法

    以前一直连接本地的数据库,连接SQL Server 2005是小菜的... 做项目也是老师搭好了服务器端,打上IP去访问就行...也不用考虑太多. 今天自己在公司搭SQL Server 2005服务器 ...

  7. JDBC连接SQL server与ADO.NET连接Sql Server对比

    JDBC连接SQL server与ADO.NET连接Sql Server对比 1.JDBC连接SQL server 1)java方面目前有很多驱动能够驱动连接SQL servernet.   主流的有 ...

  8. 利用Ring Buffer在SQL Server 2008中进行连接故障排除

    原文:利用Ring Buffer在SQL Server 2008中进行连接故障排除 出自:http://blogs.msdn.com/b/apgcdsd/archive/2011/11/21/ring ...

  9. sql server 2008 64位连接sql 2000服务器的时候出现

    来源 https://blog.csdn.net/loeley/article/details/7095741 sql server 2008 64位连接sql 2000服务器的时候出现以下提示: 链 ...

  10. SQL Server 2005无法远程连接的解决方法 (转帖)

    方法如下:  一.为 SQL Server 2005 启用远程连接1. 单击"开始",依次选择"程序"."Microsoft SQL Server 2 ...

随机推荐

  1. [CODEVS1130]数字反转

    题目描述 Description 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零. 这是一道水题.我必须 ...

  2. 呵呵呵呵。。。系统还原了,终于可以用IE登陆百度了

    原文发布时间为:2009-12-19 -- 来源于本人的百度文章 [由搬家工具导入] 呵呵呵呵。。。今天终于有时间把系统还原了,终于可以用IE登陆百度了

  3. about data type in c#

    int: identical with int 32, capacity, Type Capacity Int16 -- (-32,768 to +32,767) Int32 (same with i ...

  4. js中eval()和$.parseJSON()的区别

    之前自己一直对ajax不是特别的熟悉,所以一般都很少用这个去写功能,但是最近这个项目中用到了,用ajax异步传数据,json传数据这个时候就需要去解析传过来的数据了,eval()和$.parseJSO ...

  5. HDU5036 Explosion(期望&&bitset)

    #include <iostream> #include <cstring> #include <string> #include <vector> # ...

  6. UVA 272 TEX Quotes【字符串】

    https://vjudge.net/problem/UVA-272 [分析]:标记一下. [代码]: #include <bits/stdc++.h> using namespace s ...

  7. Longest Valid Parentheses - LeetCode

    Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...

  8. Jenkins错误“to depth infinity with ignoreexternals:true”问题解决

    试下以下解决方法: 1.可能是SVN插件版本过低导致,升级SVN插件. 2.可能是构建时自己手动修改了代码,而SVN检出时无法覆盖导致的错误,可以先删除jenkins检出的代码,然后再检出一次去构建. ...

  9. jeesite导入数据库错误:java.sql.SQLException: Incorrect string value: '\xE4\xB8\xAD\xE5\x9B\xBD' for column 'name' at row 1问题解决

    如果使用mvn antrun:run -Pinit-db进行数据库导入导致出现如下错误: 解决方法: 这个是由于新建数据库没有选择默认字符集导致的,只要选择utf-8即可.

  10. 利用反编译学习Android

    自从2014年底到2015年中,全民创业的热潮就已经席卷全国了,一大批新的创业公司在北上广萌芽,也造成了大量的开发人员需求.扯远了,今天不谈创业潮,聊聊如何通过反编译学习Android.本文只是个人对 ...