简体   繁体   English

在 Databricks 中使用 SQL 的语句时,如何在单个案例中创建多个“ELSE”语句?

[英]How to create multiple 'ELSE' statements in a single case when statement using SQL in Databricks?

I have a query I am trying to build based on an if/else custom calculation in tableau in Databricks and I am having trouble re-writing the logic in SQL as a new field using 'Case When' from the If/Else logic in Tableau.我有一个查询,我正在尝试基于 Databricks 中的 tableau 中的 if/else 自定义计算来构建,我无法使用 Tableau 中 If/Else 逻辑中的“Case When”将 SQL 中的逻辑重写为新字段.

Tableau calc:表格计算:

IF ATTR(MEMBER) = 'TRUE'
THEN IF (ATTR([MARKE]) = 'VT'
AND (ATTR([MARKET]) = 'VT' AND PRICE < 5000 AND THRESHOLD > 100) OR
     (ATTR([MARKET]) = 'SEA' AND PRICE < 3500 AND THRESHOLD > 85) OR
     (ATTR([MARKET]) = 'CAL' AND PRICE < 1750 AND THRESHOLD > 50)
     THEN 50
ELSE SPLIT_PERCENT END
ELSE
IF ATTR([MARKET]) = 'AUSTIN' THEN [AUSTIN_SPLIT]
ELSE IF ATTR([MARKET]) = 'NYC' THEN [NYC_SPLIT]
ELSE SPLIT_PERCENT/100 END END END

Here is my current query that is failing:这是我当前失败的查询:

CASE WHEN MEMBER = 'TRUE' AND 
     (MARKET = 'VT' AND PRICE < 5000 AND THRESHOLD > 100) OR
     (MARKET = 'SEA' AND PRICE < 3500 AND THRESHOLD > 85) OR
     (MARKET = 'CAL' AND PRICE < 1750 AND THRESHOLD > 50) THEN 50
     ELSE SPLIT_PERCENT
     
     ELSE CASE WHEN MARKET = 'AUSTIN' THEN AUSTIN_SPLIT
               WHEN MARKET = 'NYC' THEN NYC_SPLIT
     ELSE SPLIT_PERCENT/100

END AS NEW_STANDARD_SPLIT

The Idea is to incorporate all of these conditions into a single field called 'New Standard Split'.想法是将所有这些条件合并到一个称为“新标准拆分”的字段中。 I read up on having multiple 'ELSE' statements and that is where my syntax came from but I am still erroring out.我读到有多个“ELSE”语句,这就是我的语法的来源,但我仍然出错。 Any help would be much appreciated.任何帮助将非常感激。

Let me point out you did not preserve the logic that was in Tableau.让我指出您没有保留 Tableau 中的逻辑。 Every time Tableau says "IF" your Sql needs to say "CASE".每次 Tableau 说“IF”时,您的 Sql 都需要说“CASE”。 Now look at Tableau's line 2 - it's missing from the Sql.现在看看 Tableau 的第 2 行 - Sql 中缺少它。 Really, that's the only difference.真的,这是唯一的区别。 Try it - start over with the Tableau example, replace "IF" with "CASE", take out the Attr() declarations and you should be good to go.试试看 - 从 Tableau 示例重新开始,将“IF”替换为“CASE”,取出 Attr() 声明,您应该对 go 感到满意。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM