我有一个主表,我必须从中获取数据.我有一个左外连接,其中字段将匹配40%的时间.然后我有另一个连接,我需要匹配表A中的数据.
这是伪代码中的SQL.此查询无效.
- 这是我想要做的部分,但不起作用.AND H.COL3 = A.STATE ????
我正在使用IBM DB2.
SELECT DISTINCT APP_NO as app_no, A.STATE as state ... ... Fields ... FROM TABLE_A A LEFT OUTER JOIN TABLE_B HIST ON HIST.COL1 = A.COL1 , TABLE_C B LEFT OUTER JOIN TABLE_D H ON H.COL2 = B.COL2 -- This is the part I want to do but doesn't work. AND H.COL3 = A.STATE???? WHERE A.BRANCH = 'Data'
Mark.. 13
我想你可以像这样重写它(但我可能会错误地读你的陈述)
FROM TABLE_A A LEFT OUTER JOIN TABLE_B HIST ON HIST.COL1 = A.COL1 LEFT OUTER JOIN TABLE_D H ON H.COL3 = A.STATE LEFT OUTER JOIN TABLE_C B ON H.COL2 = B.COL2 WHERE A.BRANCH = 'Data'
此外,IBM doco对此错误说明:
与JOIN运算符或MERGE语句关联的ON子句无效.说明:
ON子句中的列引用必须仅引用ON子句范围内的表的列.
所以我可能会弄错,当外部连接"H.COL3 = A.STATE"超出On子句的范围时,它看起来就像是错误的ON子句,因为表A不在该范围内.
我想你可以像这样重写它(但我可能会错误地读你的陈述)
FROM TABLE_A A LEFT OUTER JOIN TABLE_B HIST ON HIST.COL1 = A.COL1 LEFT OUTER JOIN TABLE_D H ON H.COL3 = A.STATE LEFT OUTER JOIN TABLE_C B ON H.COL2 = B.COL2 WHERE A.BRANCH = 'Data'
此外,IBM doco对此错误说明:
与JOIN运算符或MERGE语句关联的ON子句无效.说明:
ON子句中的列引用必须仅引用ON子句范围内的表的列.
所以我可能会弄错,当外部连接"H.COL3 = A.STATE"超出On子句的范围时,它看起来就像是错误的ON子句,因为表A不在该范围内.