简体   繁体   English

LEFT JOIN 来自同一个表的多行 | SQL 服务器 2012

[英]LEFT JOIN Multiple rows from the same table | SQL SERVER 2012

I have a problem with this query.这个查询有问题。 I don't know how to approach this since the data is within the same column and can only be separated with the labesl I , and O .我不知道如何处理这个问题,因为数据在同一列中并且只能用标签IO分开。 how will I approach this?我将如何处理这个问题? Is this possible via multiple LEFT JOIN?这可以通过多个 LEFT JOIN 实现吗?

SELECT
CHECKINOUT.userid as chkuserid, USERINFO.userid as usruserid, name, 
BADGENUMBER as badge,
LEFT(CONVERT(varchar, CHECKTIME, 23),11) as logindate,checktype,
Format(cast(RIGHT(CHECKTIME,12) as datetime),'HH:mm:ss') AS timestamp
from CHECKINOUT,USERINFO
where CHECKINOUT.userid=USERINFO.userid
and BADGENUMBER = '1693'

This is what the query looks like.这就是查询的样子。

在此处输入图片说明

What I want to achieve is for it to look like this.我想要实现的是它看起来像这样。

在此处输入图片说明

May I ask for assistance regarding this matter?我可以就此事寻求帮助吗?

how about this.这个怎么样。

select t1.*, t2.checktype, t2.timestamp from 
    (SELECT
    CHECKINOUT.userid as chkuserid, USERINFO.userid as usruserid, name, 
    BADGENUMBER as badge,
    LEFT(CONVERT(varchar, CHECKTIME, 23),11) as logindate,checktype,
    Format(cast(RIGHT(CHECKTIME,12) as datetime),'HH:mm:ss') AS timestamp
    from CHECKINOUT,USERINFO
    where CHECKINOUT.userid=USERINFO.userid
    and BADGENUMBER = '1693' and  checktype = 'I') as t1
left join
    (select CHECKINOUT.userid as chkuserid, checktype, LEFT(CONVERT(varchar, CHECKTIME, 23),11) as logindate,
        Format(cast(RIGHT(CHECKTIME,12) as datetime),'HH:mm:ss') AS timestamp
    from CHECKINOUT,USERINFO
    where CHECKINOUT.userid=USERINFO.userid
    and BADGENUMBER = '1693' and  checktype = '0')) as t2 on t2.chkuserid = t1.chkuserid
        and t2.logindate = t1.logindate 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM