也许是一个简单的问题,但我没有得到正确的结果,所以希望您能提供帮助。在这种情况下,我有两个不同的表,一个表中填充有订单数据(OrderID,Supplier和Order Value)。另一个表中填充了发票数据(发票ID,供应商,发票值,发票值-10%,发票值+ 10%)。
我需要的是基于订单表的概览,其中在订单供应商和发票供应商之间存在匹配项+订单价值在发票价值的-10%到+ 10%范围内。哪个订单属于哪个发票都无所谓,我只需要知道是否存在匹配“是”或“否”即可。
示例:在订单表中,您可以看到第1行(订单100)。它属于供应商A,价值为10。在发票表中,您可以看到第4行符合要求(供应商= A,订单价值:10-> 9到11之间的范围)。这将导致“是”。
希望您能提供帮助!
预先感谢
问候!
订单表:
发票表:
答案 0 :(得分:1)
尝试:
df <- read.table(text = '
rank name
1 John
2 Lisa
3 Stu
1 Phil
1 Mike
1 Florence
2 George
3 David
4 Diana
1 Eleanor
', header = T)
答案 1 :(得分:0)
您可以通过以下选择来做到这一点:
select *, (select 1 from Supplier s where o.value - 10 > s.value and o.value + 10 < s.value and so on) as YesOrNo from table Order o;
答案 2 :(得分:0)
如果您现在需要匹配的话,请将case
与exists
一起使用。但是,我将建议返回匹配的发票ID。如果没有匹配项,则值为NULL
select o.*,
(select i.id
from invoice i
where i.supplier = o.supplier and
o.value between i.value * 0.9 and i.value * 1.1
fetch first 1 row only
) as a_matching_invoice_id
from orders o
答案 3 :(得分:0)
select a.* into temp from order a,invoice b
where a.supplier=b.supplier and a.value=b.value
select *,case when value between min and max then state='yes'
else state='no'
end
from temp