我有一个使用CAST(CASE WHEN A and B THEN SSS) as Name
现在我需要另一个列,它将以相同的方式使用上面列的值(CASE WHEN Name SSS THEN 123)
这可能吗?
更新:
示例:
我有一张表
Name, Age, UserCode, UserId
我想使用SELECT
生成一个包含
Name, UserCode, UserName
Name
:从列Name
UserCode
:
CAST(CASE WHEN UserCode = 'A' and UserId = 'B' THEN 'SSS'
CASE WHEN UserCode = 'C' and UserId = 'Z' THEN 'ZAZ')
UserName
:使用UserCode
的结果,如果UserCode
是SSS,则UserName
会变为SAR123等......
答案 0 :(得分:1)
列名的别名是在FROM,WHERE和SELECT子句代码评估之后获得的。因此,在此评估完成之前,这些别名不可用 select或where子句中不允许使用列名的别名,对于这些子句,您必须在需要时重写代码
select (CASE WHEN CAST(CASE WHEN A and B THEN SSS .....) SSS THEN 123 .... )
FROM my_table
.......
但是列名的别名可用于ORDER BY和GROUP BY(在前面提到之后评估的子句)
all of coulmn可以按顺序使用,也可以按
分组使用答案 1 :(得分:1)
试试这个:
Select *,
CASE UserCode
When 'SSS' Then 'SAR123'
--When ... --<<Put other When clauses here
END AS UserName
FROM(
Select Name ,
CASE WHEN UserCode = 'A' and UserId = 'B' THEN 'SSS'
WHEN UserCode = 'C' and UserId = 'Z' THEN 'ZAZ'
END AS UserCode
From Table
) AS K