【问题标题】:T-SQL Case statement with 2 column values SQL Server具有 2 个列值 SQL Server 的 T-SQL Case 语句
【发布时间】:2015-05-15 14:53:09
【问题描述】:

我正在尝试使用 Case 语句来检查一列是否具有某个值,并根据该值设置另一列等于某个值。任何有关如何执行此操作的帮助将不胜感激。

类似这样的:

    SELECT
        td=isnull(a.[Instance_Name],''), '',
        td=isnull
            (CASE 
                WHEN a.[Instance_Name] LIKE 'ZZZ%'
                    THEN 'ZZZ'
                ELSE MAX(dbl.[Mnemonic]) 
            END AS dbl.[Mnemonic]), '',
        td=isnull(dbl.[Env_Type],''), '',
FROM #FailedCRITs a
    INNER JOIN [Util].[DBLIST] dbl ON a.[Instance_Name] = dbl.[Instance_Name]

【问题讨论】:

  • 您是在更新表格还是在选择中执行此操作?
  • 你究竟是如何尝试使用这个案例的,你遇到了什么问题?
  • Case 是一个表达式,不像您在编程语言中找到的 switch 语句。它用作检索单个值的决策树。
  • Simone 下面给出了答案......只需将其设置为您想要的“价值”,不要尝试分配任何东西。
  • 我尝试了以下两个建议均无济于事。我用实际代码更新了原件。我现在在“AS”处遇到语法错误。顺便说一句,td= 等的原因是这段代码被放入 HTML 表格等中。

标签: sql sql-server tsql case case-statement


【解决方案1】:

如果这是update 声明:

update table t
    set column2 = (case when column1 LIKE 'value1' then 'value2' else value3 end)

【讨论】:

    【解决方案2】:
    SELECT column1, CASE
        WHEN column1 = 50 THEN 100
        ELSE 150
    END AS column2
    FROM Table1
    

    【讨论】:

      【解决方案3】:

      这取决于您是尝试永久更新值,还是仅在 select 语句中生成它们。

      如果是更新,它会是这样的:

      UPDATE tbl
      SET c2 = CASE WHEN c1 LIKE 'foo' THEN 'bar' ELSE 'baz' END
      

      否则,

      SELECT c1
      , CASE WHEN c1 LIKE 'foo' THEN 'bar' ELSE 'baz' END AS c2
      FROM TBL
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-18
        • 1970-01-01
        • 2016-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多