【发布时间】:2020-10-25 10:05:36
【问题描述】:
请使用下面的 SQL 代码,我需要加入 TTS 表和 CMS 表,其中 CMS.NEW_COLLECTED_DIGITS = TTS.FULLNUM 并且我还需要加入 TTS.LAST_UDATE_DATE with CMS.Call_Date 但挑战是我需要获取TTS.LAST_UDATE_DATE between CMS.Call_Date AND CMS.Call_Date + '01:00:00'::"INTERVAL" 并且 LAST_UDATE_DATE 在 CMS.Call_Date 周期间隔中有很多记录,我只需要获取 Max 一个,
下面的查询给了我这个错误:expression_tree_walker: Unexpected node type 801
喜欢下面的示例
|FullNum |LAST_UDATE_DATE |Call_Date |
|123456 |6/4/2020 18:10:11 |6/4/2020 18:00:11|
|123456 |6/4/2020 18:13:11 |6/4/2020 18:00:11|
|123456 |6/4/2020 18:14:11 |6/4/2020 18:00:11|
|123456 |6/4/2020 18:20:11 |6/4/2020 18:00:11|
|123456 |6/4/2020 18:30:11 |6/4/2020 18:00:11|
|123456 |6/4/2020 18:40:11 |6/4/2020 18:00:11|
|123456 |6/4/2020 18:50:11 |6/4/2020 18:00:11|
结果将是:
|FullNum |LAST_UDATE_DATE |Call_Date |
|123456 |6/4/2020 18:50:11 |6/4/2020 18:00:11|
代码是
-- Step 1:
-- Get Call Date From IVR with CMS.CALL_HEADER
WITH CMS AS (
SELECT CALL_DATE, New_COLLECTED_DIGITS
FROM CMS),
-- Step 2
--Gett All TTS Logs Table
TTS AS (
SELECT ITEM_ID, FullNum, LAST_UDATE_DATE
FROM TTS)
-- Join CMS with TTS while ADSL_Phone_Num is matched and ticket log date is between call date and call date plus one hour
SELECT *
FROM CMS
LEFT JOIN TTS ON
CMS.NEW_COLLECTED_DIGITS = TTS.FULLNUM
AND (FIRST_Value (TTS.LAST_UDATE_DATE) OVER (PARTITION BY TTS.ITEM_ID ORDER BY TTS.LAST_UDATE_DATE DESC )
BETWEEN CMS.Call_Date AND CMS.Call_Date + '01:00:00'::"INTERVAL")
【问题讨论】:
标签: sql join window-functions netezza