Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何联接两个表以获得此结果_Sql Server - Fatal编程技术网

Sql server 如何联接两个表以获得此结果

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

我正在处理与下表类似的两个表,请帮助我进行查询,以获得与第三个表类似的结果。提前通知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    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。。。。再次非常感谢。。。。