【发布时间】:2017-06-03 01:16:07
【问题描述】:
子查询连接返回错误,找不到子查询表。感谢任何帮助!
我有两张桌子。一种是正常的。 ops_owner.track_mail_item。 另一个是 dblink(不确定它是如何工作的,但我按照它的工作原理运行
SELECT TRUNC(event_date,'HH24'),
tmi_uid
FROM TRACK_OWNER.TRACKING_DETAIL@dblink_track
WHERE event_id ='158'
AND event_date BETWEEN to_date('04/01/2017 12:00:01 AM', 'MM/DD/YYYY HH12:MI:SS AM') AND to_date('04/30/2017 11:59:59 PM', 'MM/DD/YYYY HH12:MI:SS PM')
因为 dblink 表有多个列作为键(tmi_uid 和 event_id)。我想运行子查询以使 tmi_uid 作为键,以便以后可以使用它。但是,当我运行时,错误是
ORA-00904: "M"."EVENT_DATE": 无效标识符 00904. 00000 - “%s:无效标识符” *原因:
*操作:行错误:21 列:6"
SELECT i.originfacilitycode,
i.zip5,
TRUNC(i.receivedate,'HH24'),
TRUNC(m.event_date,'HH24'),
COUNT(i.tmi_uid)
FROM ops_owner.track_mail_item i
inner join (SELECT TRUNC(event_date,'HH24'),
tmi_uid
FROM TRACK_OWNER.TRACKING_DETAIL@dblink_track
WHERE event_id ='158'
AND event_date BETWEEN to_date('04/01/2017 12:00:01 AM', 'MM/DD/YYYY HH12:MI:SS AM') AND to_date('04/30/2017 11:59:59 PM', 'MM/DD/YYYY HH12:MI:SS PM')
) m
ON i.tmi_uid = m.tmi_uid
WHERE I.PRODUCT_ID IN (81, 82, 83, 36)
AND I.RECEIVEDATE BETWEEN to_date('04/01/2017 00:00:01', 'MM/DD/YYYY HH24:MI:SS') AND to_date('04/30/2017 23:59:59', 'MM/DD/YYYY HH24:MI:SS')
AND i.lasteventcountry = 'US'
AND i.zip3 NOT IN ('006', '007', '008', '009', '090', '091', '092', '093', '094', '095', '096', '097', '098', '340', '962', '963', '964', '965', '966', '967', '968', '969', '995', '996', '997', '998', '999')
GROUP BY i.originfacilitycode,
i.zip5,
TRUNC(i.receivedate,'HH24'),
TRUNC(m.event_date,'HH24');
我非常感谢任何帮助。
【问题讨论】:
-
您的子查询没有返回日期字段...应该选择 trunc... 作为 event_date 或其他别名,然后更改您的主查询 m.