Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL中创建具有连接列的视图>;然后使用Case语句来影响值_Sql_Sql Server_Tsql_Select - Fatal编程技术网

在SQL中创建具有连接列的视图>;然后使用Case语句来影响值

在SQL中创建具有连接列的视图>;然后使用Case语句来影响值,sql,sql-server,tsql,select,Sql,Sql Server,Tsql,Select,我使用下面的代码创建了一个包含名为DisplayName的连接列的视图 create view DisplayNames as select FirstName + ' ' + LastName DisplayName, * from Table1 是否有方法使用case语句(或更好的方法)更改特定的DisplayName值 比如: 案例 当DisplayName='Robert Jones'然后是'Bob Jones' 当DisplayName='Th

我使用下面的代码创建了一个包含名为DisplayName的连接列的视图

create view DisplayNames as 
    select FirstName + ' ' + LastName DisplayName,
           *
    from Table1
是否有方法使用case语句(或更好的方法)更改特定的DisplayName

比如:

案例 当DisplayName='Robert Jones'然后是'Bob Jones' 当DisplayName='Thomas Simms'然后是'Tommy Simms'


在SQL Server中,当FirstName='Robert'和LastName='Jones'然后是'Bob Jones'

时,我建议应用

create view DisplayNames as 
    select (case when v.DisplayName = 'Bob Jones' then'Thomas Simms'
                 else v.DisplayName
            end) as DsiplayName,
           t1.*
    from Table1 t1 cross apply
         (values (FirstName + ' ' + LastName)) v(DisplayName);

这允许您在
FROM
子句中定义列。然后,您就不需要弄清楚如何删除旧值——这对于CTE或子查询是必要的。

在SQL Server中,我建议
应用

create view DisplayNames as 
    select (case when v.DisplayName = 'Bob Jones' then'Thomas Simms'
                 else v.DisplayName
            end) as DsiplayName,
           t1.*
    from Table1 t1 cross apply
         (values (FirstName + ' ' + LastName)) v(DisplayName);
这允许您在
FROM
子句中定义列。然后,您不需要弄清楚如何删除旧值——这对于CTE或子查询是必要的。

这就是您想要的吗

create view DisplayNames as 
select
    case FirstName 
        when 'Robert' then 'Bob'
        when 'Thomas' then 'Tommy'
    end 
    + ' ' 
    + LastName DisplayName,
    t.*
from Table1 t
这会将代码转换分别应用于名字,而不考虑姓氏。

这是您想要的吗

create view DisplayNames as 
select
    case FirstName 
        when 'Robert' then 'Bob'
        when 'Thomas' then 'Tommy'
    end 
    + ' ' 
    + LastName DisplayName,
    t.*
from Table1 t

这会将代码转换分别应用于名字,而不考虑姓氏。

使用您正在使用的数据库标记您的问题。使用您正在使用的数据库标记您的问题。