我有这张桌子:
另一张桌子:
我离开了第二个表到第一个表:
select
planningitems.costtype_id,
costcentercode_id,
fv.fix,
fv.var
from
planningitems
left join
(select
fix,
var,
costtype_id,
costcenter_id
from fixvar
where
costcenter_id=10 or (costcenter_id=-1 and costtype_id not in (select costtype_id from fixvar where costcenter_id=10))
) as fv on fv.costtype_id=planningitems.costtype_id
它给出了正确的结果,但我想制作costcenter_id
变量。我的意思是,我想将costcenter_id=10
替换为costcenter_id=planningitems.costcentercode_id
。
怎么可能?
我使用firebird,但我认为,这是一个常见的sql问题。
答案 0 :(得分:0)
我猜这是你想要的:
select pi.costtype_id, costcentercode_id, fv.fix, fv.var
from planningitems pi left join
fixvar fv
on fv.costtype_id = pi.costtype_id and
(fv.costcenter_id = pi.costcenter_id or
fv.costcenter_id = -1 and
fv.costtype_id not in (select fv2.costtype_id from fixvar fv2 where fv2.costcenter_id = pi.costcenter_id)
);
查询中的逻辑非常难以理解。我非常确定有一种更简单的方法可以做你想做的事。您可以考虑使用示例数据和所需结果询问另一个问题。