0

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

以下 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.
4

2 回答 2

0

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

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

必须是一个单独的命名计算,您将其放入“表达式”字段中,并且您会将名称放入对话框的“列名称”字段中。

于 2013-09-13T10:29:05.833 回答
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
于 2013-09-12T23:03:22.187 回答