SQL Server到雪花查询转换

发布于 2025-02-13 16:21:20 字数 1413 浏览 0 评论 0原文

我正在尝试将下面的查询转换为雪花,但是我想出的是,我的错误使我无法将'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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

权谋诡计 2025-02-20 16:21:21

为了关闭,如注释中所示:

  • 问题是使用+用于字符串串联的,因为在雪花中,您需要使用||而不是使用+

错误“无法将'...'转换为数字值”表明它试图将该日期转换为(将日期转换为字符串),然后Snowflake试图将其转换为+操作。

谢谢Pankaj和Mike!

For closure, as expressed in the comments:

  • The issue was using + 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!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文