Sql 案例陈述支持

Sql 案例陈述支持,sql,Sql,我可以参考我以前的案例陈述吗?我知道代码是错误的,但我想这样做: SELECT Distinct(trafficSource.campaign) AS Campaign, Case When (SUBSTR(trafficSource.campaign,10,4)) = 'news' then 'eNEWS' When (SUBSTR(trafficSource.campaign,23,4)) = 'news' then 'eNEWS' Else Null End as **

我可以参考我以前的案例陈述吗?我知道代码是错误的,但我想这样做:

SELECT
Distinct(trafficSource.campaign) AS Campaign,

Case 
  When (SUBSTR(trafficSource.campaign,10,4)) = 'news' then  'eNEWS'
  When (SUBSTR(trafficSource.campaign,23,4)) = 'news' then  'eNEWS'
  Else Null
End as **eNEWS_Flag**,

Case
  When **eNEWS_Flag** = 'eNEWS' then (SUBSTR(trafficSource.campaign,21,2)) Lang_Flag,

From Blah Blah 

WHERE eNEWS_Flag is NOT NULL

您必须重复这些条件或将此选择嵌套在另一个选择中。

鉴于当前WHERE子句消除了建议的eNEWS_标志表达式返回NULL的所有行,您应该能够重构它,而无需使用任何大小写表达式

SELECT DISTINCT
  trafficSource.campaign AS Campaign,
  'eNEWS' as eNEWS_Flag,
  SUBSTR(trafficSource.campaign,21,2)) AS Lang_Flag,
From Blah Blah 
WHERE
  SUBSTR(trafficSource.campaign,10,4) = 'news'
  OR
  SUBSTR(trafficSource.campaign,23,4) = 'news'

但在大多数情况下,不能在同一SELECT子句中引用表达式的列别名?SQL方言。也不在WHERE子句中,因为大多数引擎在计算SELECT子句之前先计算WHERE子句。

用您正在使用的数据库标记您的问题。distinct不是一个函数。它始终适用于“选择”列表中的所有列。用括号括住其中一列不会改变任何东西,也没有用。不同的a、b、c与不同的a、b、c或不同的a、b、c相同