TSQL联接以从表A中获取表B中每个记录的所有记录?
我有两张桌子:TSQL联接以从表A中获取表B中每个记录的所有记录?,tsql,join,Tsql,Join,我有两张桌子: PeriodId Period (Periods Table) -------- ------- 1 Week 1 2 Week 2 3 Week 3 EmpId PeriodId ApprovedDate (Worked Table) ----- -------- ------------ 1 1 Null 1 2 2/28/2013 2
PeriodId Period (Periods Table)
-------- -------
1 Week 1
2 Week 2
3 Week 3
EmpId PeriodId ApprovedDate (Worked Table)
----- -------- ------------
1 1 Null
1 2 2/28/2013
2 2 2/28/2013
我正在尝试编写一个查询,结果如下:
EmpId Period Worked ApprovedDate
----- -------- --------- ------------
1 Week 1 Yes Null
1 Week 2 Yes 2/28/2013
1 Week 3 No Null
2 Week 1 No Null
2 Week 2 Yes 2/28/2013
2 Week 3 No Null
我的想法是,对于每个Emp,我需要周期表中的每个周期。如果工作表中没有记录,则“否”值放置在工作字段中
要得到这个结果,TSQL是什么样子的
(注意:如果有帮助,我还可以访问每个员工都有EmpId和LastName的Employee表。出于性能原因,我希望不需要它,但如果我需要它,就可以了。)您应该能够使用以下功能:
select p.empid,
p.period,
case
when w.PeriodId is not null
then 'Yes'
else 'No' End Worked,
w.ApprovedDate
from
(
select p.periodid, p.period, e.empid
from periods p
cross join (select distinct EmpId from worked) e
) p
left join worked w
on p.periodid = w.periodid
and p.empid = w.empid
order by p.empid
请参见您应该能够使用以下功能:
select p.empid,
p.period,
case
when w.PeriodId is not null
then 'Yes'
else 'No' End Worked,
w.ApprovedDate
from
(
select p.periodid, p.period, e.empid
from periods p
cross join (select distinct EmpId from worked) e
) p
left join worked w
on p.periodid = w.periodid
and p.empid = w.empid
order by p.empid
看哇,这比我想象的要复杂得多。我一直在想,今天早上我的努力中遗漏了一两个关键词,有人的回应会让我走上正轨。这根本不是我所期望的。@SailingJudo的关键是首先为每个员工分配
时段,然后才能获得工作细节。:)哇,这比我想象的要复杂得多。我一直在想,今天早上我的努力中遗漏了一两个关键词,有人的回应会让我走上正轨。这根本不是我所期望的。@SailingJudo的关键是首先为每个员工分配时段,然后才能获得工作细节。:)