我不是很精通SQL,但我的语法似乎是正确的,我得到“TDEST.ENDZONE是无效的,在上下文中使用它”,并没有找到很多信息的内部连接与子查询到目前为止。
select * from LYNX.LEGSUM T2 inner join
( SELECT
TLORDER.END_ZONE,LEGSUM.LS_DRIVER, LEGSUM.LS_POWER_UNIT
FROM
LYNX.LEGSUM LEGSUM
LEFT OUTER JOIN LYNX.TLORDER TLORDER ON LEGSUM.LS_DLID = TLORDER.DETAIL_LINE_ID
WHERE
TLORDER.ORIGIN = 'PRO8060'
AND LEGSUM.LS_ACTUAL_DATE >= '2017-01-01 00:00:00'
AND LEGSUM.LS_ACTUAL_DATE < '2018-01-01 00:00:00'
AND NOT (
TLORDER.CURRENT_STATUS = 'CANCEL'
OR TLORDER.CURRENT_STATUS = 'CANCL'
OR TLORDER.CURRENT_STATUS = 'ENTRY'
)
) TDEST
ON TDEST.ENDZONE = T2.LEGSUM.LS_FROM_ZONE
AND TDEST.LS_DRIVER = T2.LS_DRIVER
AND TDEST.LS_POWER_UNIT = T2.LS_POWER_UNIT
如果需要任何解释,我尝试实现的是从LEGSUM表中获取与子查询结果相对应的数据集,然后使用“IN”函数过滤更多数据
谢谢你的帮助
2条答案
按热度按时间2g32fytz1#
重新考虑子查询的使用,因为外部查询和子查询在单元级别共享同一个源表
LYNX.LEGSUM
。请考虑在此同一个表上合并自联接:9w11ddsr2#
ON子句中使用的END_ZONE中缺少下划线