我应该使用什么连接来获得我想要的输出基础
下面的虚拟表DETAIL TABLE
x------------------------------x
| empID | empName | date |
x------------------------------x
| 1 | emp1 | 10/01/2016 |
| 1 | emp1 | 10/03/2016 |
| 1 | emp1 | 10/04/2016 |
| 1 | emp1 | 10/05/2016 |
| 1 | emp1 | 10/06/2016 |
x------------------------------x
2016年1月10日至2016年10月15日的表格
x------------x
| date |
x------------x
| 10/01/2016 |
| 10/02/2016 |
| .......... |
| .......... |
| 10/15/2016 |
x------------x
我的查询所需的输出
x------------------------------x
| empID | empName | date |
x------------------------------x
| 1 | emp1 | 10/01/2016 |
| null | null | 10/02/2016 |
| 1 | emp1 | 10/03/2016 |
| 1 | emp1 | 10/04/2016 |
| 1 | emp1 | 10/05/2016 |
| 1 | emp1 | 10/06/2016 |
| null | null | 10/07/2016 |
| null | null | 10/08/2016 |
| null | null | 10/09/2016 |
| null | null | 10/10/2016 |
| null | null | 10/11/2016 |
| null | null | 10/12/2016 |
| null | null | 10/13/2016 |
| null | null | 10/14/2016 |
| null | null | 10/15/2016 |
x------------------------------x
答案 0 :(得分:1)
答案为OUTER JOIN
,可以是LEFT
或RIGHT
,具体取决于您使用detail
表的位置。
SELECT D.empid,
D.empname,
LD.[date]
FROM detail D
RIGHT OUTER JOIN list_dates LD
ON D.[date] = LD.[date]
您也可以使用OUTER APPLY
SELECT D.empid,
D.empname,
LD.[date]
FROM list_dates LD
OUTER apply (SELECT *
FROM detail D
WHERE D.[date] = LD.[date]) D
答案 1 :(得分:0)
看起来你只需要一个outer join
:
select e.empid, e.empname, d.date
from dates d
left join detail e on d.date = e.date