将参数传递给子查询

时间:2018-09-05 17:30:10

标签: sql teradata

我有一个SQL查询

SELECT targetDate, anEvent
FROM myTable mt
JOIN lookupTable lookup 
  ON lookup.startDate < mt.targetDate AND endDate > mt.targetDate

当我尝试使其成为子查询时

SELECT targetDate, sub.anEvent
FROM myTable mt
JOIN
(
  SELECT anEvent
  FROM lookupTable lookup
  WHERE lookup.startDate < mt.targetDate AND endDate > mt.targetDate
) sub

我收到错误消息“未定义mt”。
我需要使其成为子查询,该如何更正呢?

2 个答案:

答案 0 :(得分:2)

为什么要进行子选择?您的第一个查询是完美的。

SELECT targetDate, anEvent
FROM myTable mt
JOIN lookupTable lookup 
ON lookup.startDate < mt.targetDate AND endDate > mt.targetDate

答案 1 :(得分:0)

通过执行此操作可以达到相同的结果。

SELECT T.targetDate, T.anEvent

FROM 
(
  SELECT targetDate, anEvent
FROM myTable mt
JOIN lookupTable lookup 
  ON lookup.startDate < mt.targetDate AND endDate > mt.targetDate
) T

希望这会起作用。