当前位置: 首页 > 面试题库 >

我是否需要为每个字段重写case语句?

邓建柏
2023-03-14
问题内容

两列的大小写条件是相同的。在下面的语句中,我两次使用了此条件,但对于不同的列,是否还有其他方法不重复两次条件?

case [CPHIL_AWD_CD]
                     when ' ' then 'Not Applicable/ Not a Doctoral Student'
                     when 'X' then 'Not Applicable/ Not a Doctoral Student'
                     when 'N' then 'NO'
                     when 'Y' then 'YES'
                end as CPHIL_AWD_CD

              ,case [FINL_ORAL_REQ_CD] 
                     when ' ' then 'Not Applicable/ Not a Doctoral Student'
                     when 'X' then 'Not Applicable/ Not a Doctoral Student'
                     when 'N' then 'NO'
                     when 'Y' then 'YES'
                end as FINL_ORAL_REQ_CD

问题答案:

thepirat000答案的变体:

-- Sample data.
declare @Samples as Table (
  Frisbee Int Identity Primary Key, Code1 Char(1), Code2 Char(2) );
insert into @Samples values ( 'Y', 'N' ), ( ' ', 'Y' ), ( 'N', 'X' );
select * from @Samples;

-- Handle the lookup.
with Lookup as (
  select * from ( values
    ( ' ', 'Not Applicable/ Not a Doctoral Student' ),
    ( 'X', 'Not Applicable/ Not a Doctoral Student' ),
    ( 'N', 'No' ),
    ( 'Y', 'Yes' ) ) as TableName( Code, Description ) )
select S.Code1, L1.Description, S.Code2, L2.Description
    from @Samples as S inner join
      Lookup as L1 on L1.Code = S.Code1 inner join
      Lookup as L2 on L2.Code = S.Code2;

查找表是在CTE中创建的,并根据需要为多列进行引用。

更新: 由于某些莫名其妙的原因,表变量现在被赋予了主键。如果有人可以真正解释一下它将如何提高性能,那么我很想听听它。从执行计划来看并不明显。



 类似资料:
  • 我刚刚注意到javadoc状态(强调为我的): 返回声明中包含的此枚举常量的名称。该方法可能被重写,尽管它通常不是必需的或不需要的。当存在更“程序员友好”的字符串窗体时,枚举类型应重写此方法。 默认情况下,和返回相同的内容,因此即使被重写,仍然可以通过方法访问枚举的名称。 编辑:供参考,的javadoc(强调与原文相同): 返回此枚举常量的名称,与在其枚举声明中声明的名称完全相同。大多数程序员应该

  • 创建表movieid varchar(8)primary key,moviename varchar(40),language varchar(15),category varchar(20),islive boolean); 创建表theatermovieshow(showid varchar(8)主键, theaterid varchar(8)引用了theaterid(theaterid),

  • Spring框架中有一条经验法则——将无状态bean声明为单例,将有状态bean声明为原型。然而,没有关于原型作用域bean中有状态字段的信息,也没有关于是否应该同步查找方法以避免竞争条件的信息? 假设我有一个带多个字段的有状态bean 我有一个带有Lookup方法的Rest控制器 是否需要将字段声明为ThreadLocal 非常感谢各位的澄清。

  • 问题内容: 我有一个非常简单的文件: 而且有效。 但是,当我删除元素时,应用程序看不到实体(所有类都带有注释)。 是否有自动扫描类的机制? 问题答案: 你可以使用 该文件定义了一个名为的持久性单元,它使用JTA感知数据源。所述和元素指定管持久类:实体类,可嵌入类和超类映射。该元素指定JAR文件都包含持久化类管理的打包持久单元可见,而该class元素明确命名持久化类管理。 对于,也可以进行设置和配置

  • 在Xamarin网站上,它说: 最低操作系统版本为Windows 7。Xamarin。Forms Windows支持需要Windows 8.1和Xamarin。Forms UWP支持需要Windows 10 这是否意味着如果我想在Android和iOS应用程序的Xamarin.FormsAPI中使用UI控件和XAML,我需要有Windows 10?还是只有当我想将我的应用程序部署到Windows手