如果没有序号列,那么如果领灯表里有3条数据,还灯表里面有2条数据,full join后就是3*2=6条数据

--1、领灯表,每天每班每人允许重复数据
select ID
,ROW_NUMBER() over(partition by PersonID,classid,dt_ClassData order by id) as getnum
,[PersonID]
,[ClassID]
,[dt_GetTime]
,[dt_ClassData]
from m_LampHistoryDataGet as a
order by PersonID,dt_GetTime

--2、还灯表,每天每班每人允许重复数据
select ID
,ROW_NUMBER() over(partition by PersonID,classid,dt_ClassData order by id) as getnum
,[PersonID]
,[ClassID]
,[dt_ReturnTime]
,[dt_ClassData]
from v_LampHistoryDataReturn as a
order by PersonID,dt_ReturnTime

--3、整合表,要求领灯时间与还灯时间按照顺序一一对应,第一条领灯数据对应第一条还灯数据
SELECT
laGet.id as GetID
,laReturn.ID as ReturnID
,coalesce(laGet.getnum,laReturn.returnnum) as num
,coalesce(laGet.PersonID,laReturn.PersonID) as PersonID
,laGet.[dt_GetTime]
,laReturn.dt_ReturnTime
,coalesce(laGet.ClassID,laReturn.ClassID) as classid
,coalesce(laGet.dt_ClassData,laReturn.dt_ClassData) as dt_ClassData FROM dbo.v_LampHistoryDataGet AS laGet
full join dbo.v_LampHistoryDataReturn laReturn
on laGet.PersonID=laReturn.PersonID
and laGet.dt_ClassData=laReturn.dt_ClassData
and laGet.ClassID=laReturn.ClassID
and laGet.getnum= laReturn.returnnum
order by PersonID,coalesce(dt_GetTime,dt_ReturnTime)
--按照人员,领灯时间排序
END


  

..

full join 时通过辅助列序号列消除笛卡尔积重复列的更多相关文章

  1. Excel列名和列序号转换

    大家有没有留意过Excel表格中列名的规律呢?是这样的:A B C ... Y Z AA AB AC ... AY AZ BA BB BC ... BY BZ ... ZZ ... AAA ... 如 ...

  2. SQL 表连接查询出现重复列,由此理清LEFT JOIN、INNER JOIN的区别

    1.先创建两个临时表,并插入数据 CREATE TABLE #TEMP1( ID INT IDENTITY(1,1) PRIMARY KEY, name NVARCHAR(50)) CREATE TA ...

  3. 力扣题目汇总(反转字符串中的单词,EXCEL表列序号,旋置矩阵)

    反转字符串中的单词 III 1.题目描述 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序. 示例 1: 输入: "Let's take LeetCode ...

  4. 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'OrderList' 中的标识列插入显式值

    问题描述:在SQL SERVER 2008中,向数据表中字段插入数据时,会报错,错误如下: 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'OrderList' 中的标识列插入显式 ...

  5. 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 '#TT' 中的标识列插入显式值。 sql server 临时表

    当 IDENTITY_INSERT 设置为 OFF 时,不能向表 '#TT' 中的标识列插入显式值.我是在SqlServer写存储过程中遇到的这个错误,当时就心想:临时表怎么会有主键呢,我也没有设置主 ...

  6. 当 IDENTITY_INSERT 设置为 OFF 时,不能为表‘XXX’中的标识列插入显式值。

    在创建事务复制时,很多时候不一定使用快照进行初始化,而是使用备份还原初始化.当对有标识列(即identity的自增列)的表进行复制的时候,使用备份还原初始化搭建起来的复制常常就会报错,即:当 IDEN ...

  7. 171. Excel表列序号

    题目:给定一个Excel表格中的列名称,返回其相应的列序号. 例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> ...

  8. Leetcode——171.Excel表列序号【水题】

    @author: ZZQ @software: PyCharm @file: leetcode171_Excel表列序号.py @time: 2018/11/22 15:29 要求: 给定一个Exce ...

  9. LeetCode--171--Excel表列序号

    问题描述: 给定一个Excel表格中的列名称,返回其相应的列序号. 例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -& ...

随机推荐

  1. linux日志服务之logwatch

    因为logwatch默认要使用sendmail服务,所以请参考linux之发送邮件--sendmail服务配置首先设置正确sendmail服务. 安装logwatch. 查看logwatch文件在/e ...

  2. Windows环境Vim编辑器如何执行Ruby代码

    1.下载 Ruby 1.8.5(2006-8-25) for Windows: 在网页http://www.rubychina.net/downloads/ 上找到  --〉Ruby on Windo ...

  3. Oracle sql例子

    create database oracle1 )) select * from class ,'一班') ,'二班') ,'三班') --创建学生表 ),cid int ,constraint FK ...

  4. Centos查看文件夹大小

    查看当前目录下文件夹大小 du -h --max-depth=1 查看整体情况 df -h

  5. AC日记——Maximal GCD codeforces 803c

    803C - Maximal GCD 思路: 最大的公约数是n的因数: 然后看范围k<=10^10; 单是答案都会超时: 但是,仔细读题会发现,n必须不小于k*(k+1)/2: 所以,当k不小于 ...

  6. UbuntuMate开机自动启动ssh服务

    在文件/etc/init/ssh.conf中,有一句 start on filesystem or runlevel [2345] 如果想关闭自动启动的话,把这一局修改为start on runlev ...

  7. POJ 1298 The Hardest Problem Ever【字符串】

    Julius Caesar lived in a time of danger and intrigue. The hardest situation Caesar ever faced was ke ...

  8. BZOJ 1036 [ZJOI2008]树的统计Count (树链剖分)(线段树单点修改)

    [ZJOI2008]树的统计Count Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 14968  Solved: 6079[Submit][Stat ...

  9. 路由器漏洞利用工具RouterSploit

     路由器漏洞利用工具RouterSploit 网络中存在大量的嵌入式设备,如路由器.智能摄像头.这类设备安全防护程度较低.由于这些设备更新不方便,一旦发现漏洞,往往不能及时修复.所以,在网络渗透测试中 ...

  10. luogu P1577 切绳子

    题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位. 输入输出格式 输入格式: 第一行两个整数N和K,接下来N行,描 ...