具有多条件语法的SQL Server CASE语句

迈克·W

我需要在选择语句中添加一个case语句,但是我似乎无法正确理解语法,有人可以帮忙吗?

SELECT  
    uuid = pnt.ID
    ,extras = (CASE (SELECT pnt.TypeID as [type], pnt.Source as source)
                  WHEN source = 7 THEN 'a'
                  WHEN source = 1 AND [type] = 0 THEN 'b'
                  WHEN source = 8 THEN 'c'
                  WHEN source = 2 AND [type] = 0 THEN 'd'
                  WHEN source = 3 AND [type] IN (5,6,7,8) THEN 'e'
                  ELSE NULL
                END)
FROM 
    Mydata as pnt 

存在多个问题,案例中的选择不正确,条件source = 7是错误的,与AND的组合条件是错误的,而使用IN的条件是不正确的。

我将对“多条标准的案情陈述”的回答用作案情陈述的基础。

马特奥·阿夫萨尼(Matteo Avesani)

有两种类型的case语句:

  • 一个简单的case语句,将一个表达式与一组简单的表达式进行比较以返回特定的值。
  • 搜索的case语句,它评估一组布尔表达式以返回特定值。

https://msdn.microsoft.com/zh-CN/library/ms144841(v=sql.105).aspx

在您的脚本中,您正在“混合”它们,因此您的脚本不起作用。这可能是一个很好的解决方案:

SELECT
    pnt.ID
    ,CASE
        WHEN pnt.source = 7 THEN 'a'
        WHEN pnt.source = 1 AND pnt.TypeID = 0 THEN 'b'
        WHEN pnt.source = 8 THEN 'c'
        WHEN pnt.source = 2 AND pnt.TypeID = 0 THEN 'd'
        WHEN pnt.source = 3 AND pnt.TypeID IN (5, 6, 7, 8) THEN 'e'
        ELSE NULL
    END
FROM
    @Mydata AS pnt

警告!如果需要填充单个变量(uuid,其他),则必须确保查询的结果只有1条记录

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有多条件语法的SQL Server CASE语句

来自分类Dev

SQL Server:WHERE子句中具有IN条件的CASE语句

来自分类Dev

Sql Server 奇怪的 CASE 语句

来自分类Dev

SQL Server Case语句和聚合功能

来自分类Dev

SQL Server:长CASE语句的替代方法

来自分类Dev

尝试在SQL Server中使用CASE语句

来自分类Dev

SQL Server:case语句中的昂贵查询

来自分类Dev

SQL Server TVP与Where / Case语句合并

来自分类Dev

嵌入在In子句中的SQL Server case语句

来自分类Dev

尝试在SQL Server中使用CASE语句

来自分类Dev

从 case 语句中添加行 - SQL Server

来自分类Dev

在 SQL Server 中使用嵌套的 CASE 语句

来自分类Dev

动态添加case语句sql server

来自分类Dev

在总和中嵌套 Case 语句 - SQL Server

来自分类Dev

SQL Server 中使用 Case 语句的嵌套 If 语句

来自分类Dev

SQL Server:具有许多条件的联接表

来自分类Dev

带有ELSe的嵌套CASE语句(SQL Server)

来自分类Dev

SQL Server 2005中带有CASE WHEN语句的IS NULL

来自分类Dev

sql case语句或if语句

来自分类Dev

SQL Server:使用Case语句进行变量声明

来自分类Dev

SQL Server中的WHERE子句内的CASE语句

来自分类Dev

在SQL Server中使用case语句更新多列

来自分类Dev

在SQL Server中将CASE与JOIN语句一起使用

来自分类Dev

SQL Server中的WHERE子句内的CASE语句

来自分类Dev

在SQL Server中使用case语句选择SELECT AS

来自分类Dev

选择where子句中的SQL Server CASE语句

来自分类Dev

在SQL Server 2008中的case语句中排除值

来自分类Dev

如何在SQL Server中使用CASE语句

来自分类Dev

在 SQL Server 的 WHERE 子句中使用 CASE 语句