gpt4 book ai didi

sql - 我应该使用哪个 sql 连接查询?

转载 作者:行者123 更新时间:2023-12-04 22:07:15 25 4
gpt4 key购买 nike

我是使用复杂查询的菜鸟..所以我在这里有点困惑..

这里有问题:

我有两张 table ,第一张是

员工:

empID name  branchID   etc
1 ab 1 ...
2 abc 4 ...
3 ad 4 ...

第二张 table 是

员工出勤率:

empID   attDate     hourIn  hourOut  etc
1 05-06-2013 12.00 14.00 ...
1 05-07-2013 10.00 14.00 ...
1 05-10-2013 09.00 12.00 ...
2 05-06-2013 08.00 14.00 ...
2 05-10-2013 08.00 10.00 ...
3 05-09-2013 11.00 15.00 ...

我想要完成的是这个 View :

empID name   attDate     hourIn  hourOut  etc
1 ab 05-06-2013 12.00 14.00 ...
2 abc 05-06-2013 08.00 14.00 ...
3 ad 05-06-2013 null null ...
1 ab 05-07-2013 10.00 14.00 ...
2 abc 05-07-2013 null null ...
3 ad 05-07-2013 null null ...
1 ab 05-09-2013 null null ...
2 abc 05-09-2013 null null ...
3 ad 05-09-2013 11.00 15.00 ...
1 ab 05-10-2013 09.00 12.00 ...
2 abc 05-10-2013 08.00 10.00 ...
3 ad 05-10-2013 null null ...

我用的是sql server management studio 2008,很有趣,我觉得这很容易,但我还是做不到,我试过用左外连接、右外连接、内连接,甚至交叉JOIN,但他们都没有给我想要的结果..

几乎给我答案的是 CROSS JOIN 但 ID 不匹配,因为 CROSS JOIN 没有使用 ON 子句..当我添加 WHERE 时,它自动变成了 INNER JOIN..

我是不是漏掉了什么?对不起,如果这个问题很愚蠢,对不起英语不好:)

最佳答案

 WITH DateList AS(
SELECT DISTINCT E.EmpiD,E.Name,EA.AttDate FROM EmployeeAttendance EA
CROSS JOIN Employee E )

SELECT
DL.empID,
DL.name,
DL.attDate,
EA.hourIn,
EA.hourOut,
EA.etc
FROM DateList DL
LEFT OUTER JOIN EmployeeAttendance EA
ON DL.EmpID = EA.EmpID AND
DL.AttDate = EA.AttDate
ORDER BY DL.AttDate,DL.EmpId

SQL Fiddle

拉吉

关于sql - 我应该使用哪个 sql 连接查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16535538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com