案例陈述的新命名计算表达式?

时间:2013-09-12 22:48:53

标签: sql ssas

任何人都可以帮助处理案例陈述吗?

以下CASE STATEMENT是我的SQL管理中的结果。

select
Column1 = case when Column1 = 'true' then 'Y'
ELSE 'N'
END ,
Column2 = case when Column1 = 'true' then 'Y'
ELSE 'N'
END ,
SHARED = case when Column1='true' AND  Column1='true' THEN 'SHARED' ELSE 'NOTSHARED'
END
FROM Table

结果:

Column1         Column2         SHARED
Y       N       NOTSHARED
N       N       NOTSHARED
Y       N       NOTSHARED
N       N       NOTSHARED
N       N       NOTSHARED
Y       N       NOTSHARED
Y       N       NOTSHARED
Y       N       NOTSHARED
N       N       NOTSHARED
Y       N       NOTSHARED
N       N       NOTSHARED
Y       N       NOTSHARED
Y       N       NOTSHARED
N       N       NOTSHARED

我必须使用上面的语句创建一个新的命名计算。怎么做?

当我尝试这个时,它显示错误:

Deferred prepare could not be completed.
Statement(s) could not be prepared.
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

2 个答案:

答案 0 :(得分:0)

您应该将查询放到子查询中,然后您可以在select语句中使用它,如下所示

select column1, column2, 
       SHARED = case when Column1='true' AND  Column1='true' 
                     THEN 'SHARED' 
                     ELSE 'NOTSHARED'
                END
 from (    select
           Column1 = case when Column1 = 'true' then 'Y'
           ELSE 'N'
           END ,
           Column2 = case when Column1 = 'true' then 'Y'
           ELSE 'N'
           END 
           FROM Table 
      ) Tab

答案 1 :(得分:0)

如果您想在Analysis Services多维数据集的数据源视图中的命名计算中执行此操作,正如我从您的问题中假设的那样,那么每个子句都像

case when Column1 = 'true' then 'Y' ELSE 'N' END

必须是一个单独的命名计算,您将其放入 Expression 字段,并将名称放入对话框的列名称字段中。