我有3个表格 - TableA
,TableB
和TableDetail
**Table Detail**
id FinalValue
1 99
2 88
3 77
**Table A**
id InitValue Num
1 10 100
2 30 200
**Table B**
id InitValue Num
3 20 200
我的要求是根据
从FinalValue
获取TableDetail
Num
(用户将从textBox UI中选择Num
值。如果TableB有一个partial Num的记录,则使用表B的id。如果没有,则使用表A的id。
假设表A有所有Num值的记录。
例如,
If Num=200:
由于TableB中存在Num=200
的记录,因此请使用TableB的相应id (3)
并从TableDetail获取FinalValue,其中id = 3,即
FinalValue = 77
If Num =100:
SinceTableB没有Num=100
的任何记录,请使用TableA的相应id (1)
并从TableDetail获取FinalValue,其中id = 1,即
FinalValue = 99
你能不能帮我构建一个PL / SQL查询。谢谢!
答案 0 :(得分:3)
使用UI中的值替换200,您可以这样做:
declare @id int
select @id = id from TableB where Num = 200
if(@id is null)
begin
select @id = id from TableA where id = 200
end
select FinalValue from Detail where id = @id
答案 1 :(得分:3)
尝试以下操作,@ num由用户传递
select FinalValue
from TableDetail
where id in
(select isnull(T2.id,T1.id)
from TableA T1 on T.id = T1.id and T1.Num = @num
left join TableB T2 on T.id = T2.id and T2.Num = @num)