0

我是一个sql新手。我有两个数据库表:

T_VALUE
valueId
value
valueInfo

T_SAMPLE
sampleId
valueId
oldValueId
sampleInfo

表 T_SAMPLE 的 valueId 和 oldValueId 是表 T_VALUE 的 valueId。

我正在寻找以下输出的选择(创建视图)语句:

V_DIFF
sampleId
sampleInfo
valueInfo (from T_VALUE record determined by valueId)
value (from T_VALUE record determined by valueId)
diffValue (=value from V_DIFF minus the value from T_VALUE record determined by oldValueId)

进一步的问题: oldValueId 的记录不能存在或者T_SAMPLE 的oldValueId 可以为null或者T_VALUE的oldValueId 确定的记录的值可以为null。那么 diffValue 的输出应该是值(来自由 valueId 确定的 T_VALUE 记录)。

谢谢你的提示 Lykke

4

2 回答 2

1

我想你想要两个连接:

create view v_diff as
select s.sampleid, s.sampleinfo, v1.valueinfo, v1.value,
    v1.value - v2.value as diffvalue
from t_sample s
inner join t_value v1 on v1.valueid = s.valueid
inner join t_value v2 on v2.valueid = s.oldvalueid
于 2020-11-19T20:55:26.810 回答
0
create view v_diff as
select distinct s.sampleid, s.sampleinfo, v1.valueinfo, v1.value,
    v1.value - coalesce(v2.value, 0) as diffvalue
from t_sample s
inner join t_value v1 on v1.valueid = s.valueid
left join t_value v2 on v2.valueid = s.oldvalueid

应该解决我进一步的问题,还是?

于 2020-11-19T22:53:24.933 回答