【问题标题】:How to convert nested Oracle SQL statement to pySpark SQL?如何将嵌套的 Oracle SQL 语句转换为 pySpark SQL?
【发布时间】:2021-03-13 03:25:51
【问题描述】:

正在尝试将此 Oracle SQL 语句转换为 SQL:

SELECT 
FROM
  P_TIME_PERIODS  TP_RaisedDate,
  P_DCF_ACTIVITY,
  INM_ACTIVITIES,
  P_FINANCE_GROUPS,
  P_CREW_HQS,
  P_ACTIVITY_CODES,
  P_ACTIVITIES,
  (SELECT
  DISTINCT
  M_WW_TWRKAE00.CDE_dist,
  M_WW_TWRKAE00.CDE_WR,
(SELECT DECODE(a.TXT_VALUE,NULL,a.FLG_VALUE,a.TXT_VALUE)  FROM M_WW_TWRKAE00  a WHERE M_WW_TWRKAE00.cde_dist=a.cde_dist AND M_WW_TWRKAE00.cde_wr=a.cde_wr AND a.CDE_ATTRIBUTE='E911') ""Right1"",
 (SELECT DECODE(a.TXT_VALUE,NULL,a.FLG_VALUE,a.TXT_VALUE)  FROM M_WW_TWRKAE00  a WHERE M_WW_TWRKAE00.cde_dist=a.cde_dist AND M_WW_TWRKAE00.cde_wr=a.cde_wr AND a.CDE_ATTRIBUTE='E912') ""Left1"",
 (SELECT DECODE(a.TXT_VALUE,NULL,a.FLG_VALUE,a.TXT_VALUE)  FROM M_WW_TWRKAE00  a WHERE M_WW_TWRKAE00.cde_dist=a.cde_dist AND M_WW_TWRKAE00.cde_wr=a.cde_wr AND a.CDE_ATTRIBUTE='E913') ""Minor1"",
 (SELECT DECODE(a.TXT_VALUE,NULL,a.FLG_VALUE,a.TXT_VALUE)  FROM M_WW_TWRKAE00  a WHERE M_WW_TWRKAE00.cde_dist=a.cde_dist AND M_WW_TWRKAE00.cde_wr=a.cde_wr AND a.CDE_ATTRIBUTE='E914') ""Major1"",

`

【问题讨论】:

标签: sql oracle pyspark subquery


【解决方案1】:

DECODE(a.TXT_VALUE,NULL,a.FLG_VALUE,a.TXT_VALUE)

应该与

相同

CASE WHEN a.TXT_VALUE IS NULL THEN a.FLG_VALUE ELSE a.TXT_VALUE END

但可以简化为

COALESCE(a.TXT_VALUE, a.FLG_VALUE)

适用于 Spark SQL 和 SQL Server。

【讨论】:

  • “谢谢”。我应该如何处理根据特定条件创建列的 WHERE M_WW_TWRKAE00.cde_dist=a.cde_dist AND M_WW_TWRKAE00.cde_wr=a.cde_wr AND a.CDE_ATTRIBUTE='E911') ""Right1""
  • 按原样使用它。这有什么错误吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-13
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
相关资源
最近更新 更多