2017-04-26 48 views
0

下列情况3表的联接:SQL语法(可能是SQL精简版相关)

  1. 在设备数量 - 总是一个号码,这样只需加入2列

  2. 插槽号 - 第一种情况“Logs.Slot”是数字,第二种“slotlist2”是逗号分隔的列表。

  3. On the Slot - Def_Instances.slot就像Logs.Slot(意思是它的一个数字并且被实现为Logs.Slot),但是其偏移值为Offset +1。

现在我想获得语法正确的使用SQL精简版

select Logs.*, Def_Instances.*, (Def_Instances.slot + Def_Instances.Offset + 1) as A from Def_Instances 
inner join Logs ON Logs.Column1 = Def_Instances.DeviceNumber 
and (', ' || RTRIM(Def_Instances.slotlist2) || ',') LIKE '%, '|| Logs.Slot ||',%' 
and (', ' || RTRIM(Def_Instances.A) || ',') LIKE '%, '|| Logs.Slot ||',%' 

当以下嗯,这一个告诉我htere是一个错误。

当我在玩耍时。它要么不识别+符号,要么列A,或者据我记得,之前我收到了另外一个错误。

在此先感谢

回答

0

你不能再使用列别名从where子句中select条款。不要忘记,在投影输出(运行select子句)之前,SQL首先删除行(运行where子句)。

您必须将表达式放在where子句中。并且可能会进行一些类型转换,因为它似乎是一个数字,然后你开始像字符串一样对待它。