使用生成的列创建另一列 - SQL Server

时间:2018-01-28 07:45:29

标签: sql sql-server tsql join

我有一个使用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等......

2 个答案:

答案 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