sql - 在加入 SQL Netezza 时使用窗口聚合函数
问题描述
请使用下面的 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")
解决方案
嗯。. . 从您描述问题的方式来看,您可以使用 ajoin
然后row_number()
选择每个 cms 通话记录的最新记录:
select ct.*
from (select . . . , -- list the columns you want here,
row_number() over (partition by cms.new_collect_digits, cms.call_date order by tts.last_update_date desc) as seqnum
from cms left join
tts
on cms.new_collect_digits = tts.fullnum and
tts.last_update_date between cms.call_date and cms.call_date + '01:00:00'::"INTERVAL"
) ct
where seqnum = 1;
推荐阅读
- ios - 在另一个视图中居中视图并自定义 Playground 视图大小
- javascript - 响应式网站的服务器端图像大小调整
- python-3.x - 从Python中的嵌套列表中删除连续的重复项?
- amazon-web-services - AWS Lambda 无法从 START_OBJECT 令牌中反序列化“java.lang.String”的实例
- python - wingIDE 不能在 kali linux 上运行没有错误信息
- sql - 选择不同的唯一
- php - WooCoomerce:单击条款复选框时打开弹出窗口
- python-3.x - 我在 pip 中不断收到环境错误,如何解决?
- spring-boot - (jar 冲突)java.lang.VerifyError:堆栈映射与异常处理程序中的不匹配
- r - 使用 geom_tiles 对列进行排序