Using Case When with ON 子句 SQL - Netezza
Using Case When with ON clause SQL - Netezza
请给我以下代码
SELECT DISTINCT
CASE WHEN LENGTH (i.MOBILE_NUMBER) = 10 THEN 0||i.MOBILE_NUMBER ELSE i.MOBILE_NUMBER END AS New_Mob_Num,
COUNT(i.SUBS_ID) AS Subs_Count,
COUNT(s.MESSAGEID) AS SMS_COUNT,
SUM(CASE WHEN s.MESSAGESTATE = 'Undeliverable' THEN COUNT ELSE 0 END) AS Undeliverablecount,
SUM(CASE WHEN s.MESSAGESTATE = 'Delivered' THEN COUNT ELSE 0 END) AS Deliveredcount
FROM PRD_STG.MOB.INF_SUBSCRIBER i
INNER JOIN ANALYTICS.sms.mq s
ON i.New_Mob_Num = strright(s.destination, 11)
GROUP BY 1
我得到一个错误 ERROR: Attribute 'I.NEW_MOB_NUM' not found
谁可以使用列 CASE WHEN LENGTH (i.MOBILE_NUMBER) = 10 THEN 0||i.MOBILE_NUMBER ELSE i.MOBILE_NUMBER END AS New_Mob_Num 带有 ON 子句,而 Joining。
当像下面这样使用带有 ON 子句的 CASE WHEN 语句时,我得到了错误的结果
SELECT DISTINCT
CASE WHEN LENGTH (i.MOBILE_NUMBER) = 10 THEN 0||i.MOBILE_NUMBER ELSE i.MOBILE_NUMBER END AS New_Mob_Num,
COUNT(i.SUBS_ID) AS Subs_Count,
COUNT(s.MESSAGEID) AS SMS_COUNT,
SUM(CASE WHEN s.MESSAGESTATE = 'Undeliverable' THEN COUNT ELSE 0 END) AS Undeliverablecount,
SUM(CASE WHEN s.MESSAGESTATE = 'Delivered' THEN COUNT ELSE 0 END) AS Deliveredcount
FROM PRD_STG.MOB.INF_SUBSCRIBER i
INNER JOIN ANALYTICS.sms.mq s
ON (CASE WHEN LENGTH (i.MOBILE_NUMBER) = 10 THEN 0||i.MOBILE_NUMBER ELSE i.MOBILE_NUMBER END)
= strright(s.destination, 11)
GROUP BY 1
这就是我的意思:
SELECT i.New_Mob_Num ,
COUNT(i.SUBS_ID) AS Subs_Count,
COUNT(s.MESSAGEID) AS SMS_COUNT,
SUM(CASE WHEN s.MESSAGESTATE = 'Undeliverable' THEN COUNT ELSE 0 END) AS Undeliverablecount,
SUM(CASE WHEN s.MESSAGESTATE = 'Delivered' THEN COUNT ELSE 0 END) AS Deliveredcount
FROM (SELECT i.*,
(CASE WHEN LENGTH (i.MOBILE_NUMBER) = 10
THEN '0'||i.MOBILE_NUMBER
ELSE i.MOBILE_NUMBER
END) AS New_Mob_Num
FROM PRD_STG.MOB.INF_SUBSCRIBER i
) i JOIN
ANALYTICS.sms.mq s
ON i.New_Mob_Num = strright(s.destination, 11)
GROUP BY 1;
这应该可以解决您的语法错误。如果这没有任何用处,请提出一个 new 问题,并提供适当的示例数据和所需的结果。
请给我以下代码
SELECT DISTINCT
CASE WHEN LENGTH (i.MOBILE_NUMBER) = 10 THEN 0||i.MOBILE_NUMBER ELSE i.MOBILE_NUMBER END AS New_Mob_Num,
COUNT(i.SUBS_ID) AS Subs_Count,
COUNT(s.MESSAGEID) AS SMS_COUNT,
SUM(CASE WHEN s.MESSAGESTATE = 'Undeliverable' THEN COUNT ELSE 0 END) AS Undeliverablecount,
SUM(CASE WHEN s.MESSAGESTATE = 'Delivered' THEN COUNT ELSE 0 END) AS Deliveredcount
FROM PRD_STG.MOB.INF_SUBSCRIBER i
INNER JOIN ANALYTICS.sms.mq s
ON i.New_Mob_Num = strright(s.destination, 11)
GROUP BY 1
我得到一个错误 ERROR: Attribute 'I.NEW_MOB_NUM' not found
谁可以使用列 CASE WHEN LENGTH (i.MOBILE_NUMBER) = 10 THEN 0||i.MOBILE_NUMBER ELSE i.MOBILE_NUMBER END AS New_Mob_Num 带有 ON 子句,而 Joining。
当像下面这样使用带有 ON 子句的 CASE WHEN 语句时,我得到了错误的结果
SELECT DISTINCT
CASE WHEN LENGTH (i.MOBILE_NUMBER) = 10 THEN 0||i.MOBILE_NUMBER ELSE i.MOBILE_NUMBER END AS New_Mob_Num,
COUNT(i.SUBS_ID) AS Subs_Count,
COUNT(s.MESSAGEID) AS SMS_COUNT,
SUM(CASE WHEN s.MESSAGESTATE = 'Undeliverable' THEN COUNT ELSE 0 END) AS Undeliverablecount,
SUM(CASE WHEN s.MESSAGESTATE = 'Delivered' THEN COUNT ELSE 0 END) AS Deliveredcount
FROM PRD_STG.MOB.INF_SUBSCRIBER i
INNER JOIN ANALYTICS.sms.mq s
ON (CASE WHEN LENGTH (i.MOBILE_NUMBER) = 10 THEN 0||i.MOBILE_NUMBER ELSE i.MOBILE_NUMBER END)
= strright(s.destination, 11)
GROUP BY 1
这就是我的意思:
SELECT i.New_Mob_Num ,
COUNT(i.SUBS_ID) AS Subs_Count,
COUNT(s.MESSAGEID) AS SMS_COUNT,
SUM(CASE WHEN s.MESSAGESTATE = 'Undeliverable' THEN COUNT ELSE 0 END) AS Undeliverablecount,
SUM(CASE WHEN s.MESSAGESTATE = 'Delivered' THEN COUNT ELSE 0 END) AS Deliveredcount
FROM (SELECT i.*,
(CASE WHEN LENGTH (i.MOBILE_NUMBER) = 10
THEN '0'||i.MOBILE_NUMBER
ELSE i.MOBILE_NUMBER
END) AS New_Mob_Num
FROM PRD_STG.MOB.INF_SUBSCRIBER i
) i JOIN
ANALYTICS.sms.mq s
ON i.New_Mob_Num = strright(s.destination, 11)
GROUP BY 1;
这应该可以解决您的语法错误。如果这没有任何用处,请提出一个 new 问题,并提供适当的示例数据和所需的结果。