SQL Server到雪花查询转换
我正在尝试将下面的查询转换为雪花,但是我想出的是,我的错误使我无法将'04/17/22'转换为数字值。
SQL:
SELECT
user_id AS u_id,
Substring(Max( CONVERT(VARCHAR(10), system_modstamp, 121) +
CASE -- Categorizing all of the team roles
WHEN team_member_role LIKE 'AM%'
OR team_member_role LIKE '%AM %'
OR team_member_role LIKE 'ASR%'
THEN 'AM Sales'
WHEN team_member_role LIKE '%fsr%'
THEN 'FSR'
WHEN team_member_role LIKE '%RSD%'
AND team_member_role NOT LIKE '%parts%'
THEN 'AC Sales'
WHEN team_member_role LIKE 'RSA%'
THEN 'AC Sales'
ELSE team_member_role
END
), 11, 99) AS team_groups, Max(system_modstamp) AS SYSTEM_MODSTAMP
FROM S_SFDC_ACCOUNT_TEAM
GROUP BY user_id
雪花:
SELECT
user_id AS u_id,
SUBSTR(Max( TO_VARCHAR( system_modstamp,'YYYY-MM-DD') +
CASE WHEN team_member_role LIKE 'AM%' OR team_member_role LIKE '%AM %' OR team_member_role LIKE 'ASR%' THEN 'AM Sales' WHEN team_member_role LIKE '%fsr%' THEN 'FSR' WHEN team_member_role LIKE '%RSD%' AND team_member_role NOT LIKE '%parts%' THEN 'AC Sales' WHEN team_member_role LIKE 'RSA%' THEN 'AC Sales' ELSE team_member_role END
), 11, 99) AS team_groups, Max(system_modstamp) AS SYSTEM_MODSTAMP
FROM S_SFDC_ACCOUNT_TEAM
GROUP BY user_id
I'm trying to convert this query below to Snowflake but what I came up with kept giving me an error that it couldn't conver '04/17/22' to a numeric value.
SQL:
SELECT
user_id AS u_id,
Substring(Max( CONVERT(VARCHAR(10), system_modstamp, 121) +
CASE -- Categorizing all of the team roles
WHEN team_member_role LIKE 'AM%'
OR team_member_role LIKE '%AM %'
OR team_member_role LIKE 'ASR%'
THEN 'AM Sales'
WHEN team_member_role LIKE '%fsr%'
THEN 'FSR'
WHEN team_member_role LIKE '%RSD%'
AND team_member_role NOT LIKE '%parts%'
THEN 'AC Sales'
WHEN team_member_role LIKE 'RSA%'
THEN 'AC Sales'
ELSE team_member_role
END
), 11, 99) AS team_groups, Max(system_modstamp) AS SYSTEM_MODSTAMP
FROM S_SFDC_ACCOUNT_TEAM
GROUP BY user_id
Snowflake:
SELECT
user_id AS u_id,
SUBSTR(Max( TO_VARCHAR( system_modstamp,'YYYY-MM-DD') +
CASE WHEN team_member_role LIKE 'AM%' OR team_member_role LIKE '%AM %' OR team_member_role LIKE 'ASR%' THEN 'AM Sales' WHEN team_member_role LIKE '%fsr%' THEN 'FSR' WHEN team_member_role LIKE '%RSD%' AND team_member_role NOT LIKE '%parts%' THEN 'AC Sales' WHEN team_member_role LIKE 'RSA%' THEN 'AC Sales' ELSE team_member_role END
), 11, 99) AS team_groups, Max(system_modstamp) AS SYSTEM_MODSTAMP
FROM S_SFDC_ACCOUNT_TEAM
GROUP BY user_id
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为了关闭,如注释中所示:
+
用于字符串串联的,因为在雪花中,您需要使用||
而不是使用+
。错误“无法将'...'转换为数字值”表明它试图将该日期转换为(将日期转换为字符串),然后Snowflake试图将其转换为
+操作。
谢谢Pankaj和Mike!
For closure, as expressed in the comments:
+
for string concatenation, because in Snowflake you need to use||
instead.The error "couldn't convert '...' to a numeric value" shows that it tried to transform that date (into a string), and then Snowflake tried to convert it to a number for the
+
operation.Thanks Pankaj and Mike!