You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将T-SQL的CASE WHEN语句转换为Databricks SparkSQL

正确转换T-SQL CASE WHEN到SparkSQL的写法

你的代码主要存在几个语法问题,修正后即可正常运行:

错误点分析

  • 字符串引号不匹配:在Python中嵌套SQL语句时,外层双引号和内层单引号冲突,导致SQL字符串提前结束,触发解析错误。
  • 别名格式错误:SparkSQL中带空格的列别名需要用**反引号(`)**包裹,而非单引号。
  • 表名错误:原T-SQL的表是dbo.DatesTestv3,你写成了table,需替换为实际表名。
  • 函数对应偏差:T-SQL的SYSDATETIME()返回带时分秒的时间戳,Spark中对应的是current_timestamp();如果你的as_of_date是纯日期类型,用current_date()也可,last_day函数对两种类型都兼容。

修正后的代码

纯SparkSQL语句

SELECT
  *,
  CASE WHEN as_of_date = last_day(add_months(current_timestamp(), -1)) THEN 'LM' END AS `Last Month End`
FROM DatesTestv3

Python中调用SparkSQL的写法(用三重引号避免转义问题)

spark.sql("""
SELECT
  *,
  CASE WHEN as_of_date = last_day(add_months(current_timestamp(), -1)) THEN 'LM' END AS `Last Month End`
FROM DatesTestv3
""")

如果你的表属于特定数据库(对应T-SQL的dbo),需加上数据库名:

SELECT
  *,
  CASE WHEN as_of_date = last_day(add_months(current_timestamp(), -1)) THEN 'LM' END AS `Last Month End`
FROM dbo.DatesTestv3

内容的提问来源于stack exchange,提问作者Patterson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:34:57