根据条件加入,没有链接/公共列

时间:2016-07-15 13:11:53

标签: sql join

我需要根据某些条件加入两个表,但是没有公共/链接列。

enter image description here

我需要检索表B的字段以及' Actualvalue'从表A开始。条件是获取表B中的每个RangeValue和表A中的Map,以查找值在Range Start和Range End之间的位置并获取相应的ActualValue。请提供您的建议。表B中的RangeValue是唯一的

3 个答案:

答案 0 :(得分:0)

此查询应该完成工作:

<?xml version="1.0" encoding="utf-8"?>
<GRPO>    
<Goods>
<CardCode>V10000</CardCode>
<DocDate>07/11/2016</DocDate>
<DocDueDate>07/11/2016</DocDueDate>
<TaxDate>07/11/2016</TaxDate>
<GoodsLines>
   <Line>
      <LineNum>0</LineNum>
      <ItemNo>A00003</ItemNo>
      <ItemDesc>J.B Officeprint 1186</ItemDesc>
      <Quantity>4</Quantity>
   </Line>
   <Line>
      <LineNum>1</LineNum>
      <ItemNo>A00004</ItemNo>
      <ItemDesc>Rainbow Color Printer 5.0</ItemDesc>
      <Quantity>5</Quantity>
   </Line>
</GoodsLines>
</Goods>        
</GRPO>

答案 1 :(得分:0)

您可以尝试以下查询: -

SELECT B.*, A.Actualvalue
FROM B INNER JOIN A
ON B.RANGEVALUE BETWEEN A.RangeStart AND A.RangeEnd

答案 2 :(得分:0)

select *,
    (
    select ActualValue from A
    where B.RangeValue between RangeStart and RangeEnd
    ) as ActualValue
from B

有些原因可能是您更喜欢标量子查询而不是连接。其中一个好处是,如果范围变得混乱并且找到多个范围,它将会出错。