按时间戳月份分组

Dou*_*Fir 0 sql timestamp group-by teradata

我试图按两次分组,一次按单个级别字段分组,然后按时间戳字段的月份分组。

对 SQL 不太陌生,但这是我在阅读另一篇 SO 帖子后想到的:SQL query to group by Month part of timestamp

SELECT
        VwNIMUserDim.USER_EMAIL_ADDRESS,
         VwNIMEventFct.NIM_USER_ID, 
         SUM(CASE WHEN NIM_EVENT_TYPE_ID = 880 THEN 1 ELSE 0 END) AS APP_OPEN,
         SUM(CASE WHEN NIM_EVENT_TYPE_ID = 881 THEN 1 ELSE 0 END) AS AUTODL_SETTINGS_SAVE,
         SUM(CASE WHEN NIM_EVENT_TYPE_ID = 882 THEN 1 ELSE 0 END) AS AUTO_QUERY_CONFIRM,
         SUM(CASE WHEN NIM_EVENT_TYPE_ID = 883 THEN 1 ELSE 0 END) AS ISSUE_CLOSE,
         SUM(CASE WHEN NIM_EVENT_TYPE_ID = 884 THEN 1 ELSE 0 END) AS ISSUE_DOWNLOAD,
         SUM(CASE WHEN NIM_EVENT_TYPE_ID = 885 THEN 1 ELSE 0 END) AS ISSUE_DOWNLOAD_COMPLETE,
         SUM(CASE WHEN NIM_EVENT_TYPE_ID = 886 THEN 1 ELSE 0 END) AS PICKER_SEND_PICKS
 FROM RDMAVWSANDBOX.VwNIMEventFct
 GROUP BY NIM_USER_ID, MONTH('EVENT_GMT_TIMESTAMP')
Run Code Online (Sandbox Code Playgroud)

我的 SQL 客户端 Teradata 返回的错误消息显示:“SELECT FAILED Error 3706 语法错误需要 ',' 和 MONTH 关键字之间的内容。

这是我第一次做两件事:按两次分组和使用月份函数。

我在这里做错了什么?如何按每月的电子邮件地址用户进行分组?

dno*_*eth 5

Teradata/Standard SQL 中没有 MONTH 函数,它是 EXTRACT(YEAR/MONTH/DAY/HOUR/MINUTE/SECOND):

EXTRACT(MONTH FROM EVENT_GMT_TIMESTAMP)
Run Code Online (Sandbox Code Playgroud)