繁体   English   中英

需要在一列中查找值,然后从另一列返回值

[英]Need to find value in one column and then return value from another column

这是我的问题。 我有一个Microsoft SQL服务器数据库表,其中包含一堆列。 (我无法更改此表的数据结构!)

  • 此表中的21列代表“实际”尺寸
  • 此表中的21列代表“相对”尺寸
  • “实际大小”列通过列号对应“相对大小”列。

根据输入的'Actual'值,我需要返回相关的'Relative'值。

我已经设法通过以下case语句完成了我需要的部分工作,但case语句最多有10个条件,因此无法覆盖表中的所有21列。 解决这个问题的最佳方法是什么? 我的目标是将它放入一个select语句,以便我可以选择相对大小并在我的查询中返回它。

我用case语句做的例子:

SELECT
    T.AValue
    CASE WHEN (T.ActualColumn1 = T.AValue) then T.RelativeColumn1 ELSE
        CASE WHEN (T.ActualColumn2 = T.AValue) THEN T.RelativeColumn2 ELSE
            CASE WHEN (T.ActualColumn3 = T.AValue) THEN T.RelativeColumn3 ELSE
                CASE WHEN (T.ActualColumn4 = T.AValue) THEN T.RelativeColumn4 ELSE
                    NULL
                END 
            END 
        END 
    END AS RValue
FROM T

谢谢您的帮助!

如果将case语句更改为已搜索的案例,则可以包含10个以上的子句。

select T.AValue,
       case T.AValue
         when T.ActualColumn1 then T.RelativeColumn1
         when T.ActualColumn2 then T.RelativeColumn2
         when T.ActualColumn3 then T.RelativeColumn3
         when T.ActualColumn4 then T.RelativeColumn4
       end as RValue
from T

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM