已知有两个表, 
表A:日期、班次、班别、切割合同号、切割轧批号,炉号、管号、切割长度、切割重量、 
表B:日期、炉号、管号、产出合同号、产出长度、产出重量, 
现有如下要求: 
查询条件:日期起止、班次、班别、切割合同号、切割轧批号 查询结果数据列:日期、班次、班别、切割合同号、切割轧批号、炉号、管号、切割长度、切割重量、产出合同号、产出长度、产出重量、长度差、重量差。 
其中,产出合同号、产出长度、产出重量 取自表B。 
长度差=切割长度-产出长度 
重量差=切割重量-产出重量 对于管号,到表A中查到日期、班次、班别、切割合同号、切割轧批号、炉号、切割长度、切割重量。 
然后根据管号+炉号到表B中找产出合同号、产出长度、产出重量,如找到多条,按日期最早的一条,如未找到,则产出合同为空,产出长度、产出重量为0。 高手赐教,如何实现 请用 基本SQL 实现,因为 代码执行环境只支持基本SQL语句万分感谢

解决方案 »

  1.   

    select 
    A.日期,
    A.班别,
    A.班别,
    A.切割合同号,
    A.切割轧批号,
    A.炉号,
    A.管号,
    A.切割长度,
    A.切割重量,
    B.产出合同号,
    B.产出长度,
    B.产出重量,
    (A.切割长度-B.产出长度) as 长度差,
    (A.切割重量-B.产出重量) as 重量差
    from tableA  A
    inner join  tableB B
    on    A.管号=B.管号
    and   A.炉号=B.炉号
      

  2.   

    不太清楚你的“基本”到达一个什么程度
    select 
    A.日期, 
    A.班别, 
    A.班别, 
    A.切割合同号, 
    A.切割轧批号, 
    A.炉号, 
    A.管号, 
    A.切割长度, 
    A.切割重量, 
    (select top 1 产出合同号 from tableB where 管号=A.管号 and 炉号=A.炉号 order by 日期) as 产出合同号, 
    isnull((select top 1 产出长度 from tableB where 管号=A.管号 and 炉号=A.炉号 order by 日期),0) as 产出长度, 
    isnull((select top 1 产出重量 from tableB where 管号=A.管号 and 炉号=A.炉号 order by 日期),0) as 产出重量, 
    (A.切割长度-isnull((select top 1 产出长度 from tableB where 管号=A.管号 and 炉号=A.炉号 order by 日期),0)) as 长度差, 
    (A.切割重量-isnull((select top 1 产出重量 from tableB where 管号=A.管号 and 炉号=A.炉号 order by 日期),0)) as 重量差 
    from tableA  A