Sql server 如何联接两个表以获得此结果
我正在处理与下表类似的两个表,请帮助我进行查询,以获得与第三个表类似的结果。提前通知tnx 表2.1-1平面图Sql server 如何联接两个表以获得此结果,sql-server,Sql Server,我正在处理与下表类似的两个表,请帮助我进行查询,以获得与第三个表类似的结果。提前通知tnx 表2.1-1平面图 JobID Work_A WorkA_Plan_Hrs Work_B WorkB_Plan_Hrs 1111 1111-a 20 1111-b 30 2222 2222-a 25 2222-b 50 表(u)实际 JobID Work Actual_Hrs Finished 1111 1111-a 21 13:00 1111
JobID Work_A WorkA_Plan_Hrs Work_B WorkB_Plan_Hrs
1111 1111-a 20 1111-b 30
2222 2222-a 25 2222-b 50
表(u)实际
JobID Work Actual_Hrs Finished
1111 1111-a 21 13:00
1111 1111-b 32 14:00
2222 2222-a 27 15:00
2222 2222-b 55 16:00
期望结果
JobID Work_A WorkA_Plan_Hrs Work_B WorkB_Plan_Hrs Actual_A Actual_B Act_Finished_B Act_Finished_B
1111 1111-a 20 1111-b 30 21 32 13:00 14:00
2222 2222-a 25 2222-b 50 27 55 15:00 16:00
您可以使用两个到
table\u actual
的左连接来完成此操作,一个用于工作\u A
,另一个用于工作\u B
select
p.JobId
, p.Work_A
, p.WorkA_Plan_Hrs
, p.Work_B
, p.WorkB_Plan_Hrs
, a.Actual as Actual_A
, b.Actual as Actual_B
, a.Finished as Act_Finished_A
, b.Finished as Act_Finished_B
from table_plan p
left join table_actual a
on p.JobId = a.JobId
and p.Work_A = a.Work
left join table_actual b
on p.JobId = b.JobId
and p.Work_B = b.Work
这个问题没有任何研究成果。你在这个问题上的尝试是什么?@MILD。很乐意帮忙!非常感谢你。。。它工作得很好。。。现在,我想添加一个“完成”列,根据已完成的工作量显示0、1或2。我正在添加一个CASE WHEN函数,如:CASE WHEN Actual_B>1然后1 ELSE 0 END+CASE WHEN Actual_B>1然后1 ELSE 0 END as Done,错误消息表示实际_a列无效。你能帮我摆脱这个吗。。。。。再次感谢…我已经找到了答案,我用了a.Actual而不是Actual_a。。。。再次非常感谢。。。。