根据第三列动态选择两列之一[重复]

Posted

技术标签:

【中文标题】根据第三列动态选择两列之一[重复]【英文标题】:Dynamically choose one of two columns based on a third column [duplicate] 【发布时间】:2015-12-12 07:05:21 【问题描述】:

我有 3 个表,可以说表 A、B、C 来混淆我的软件 :)。 A 和 B 有两列数值,表 C 有一个布尔列。

我想要的是创建一个具有单列的视图,其中根据 C 中的列,选择 A 或 B 中的值。

例子:

输入:

        | A.val |    | B.val |    | C.val |
        ---------    ---------    ---------
entry1  |   1   |    |   6   |    |   T   |
entry2  |   2   |    |   8   |    |   F   |

输出:

       | D |
       -----
entry1 | 1 |
entry2 | 8 |

我想知道是否有办法在 SQL 语句中执行此操作,因为我目前正在以编程方式执行此操作,这会占用不必要的资源。

【问题讨论】:

您应该显示表结构并提及这些表中的键 这可能会有所帮助:***.com/questions/17598350/… vkp,键是“entry1”,“entry2”。可能本可以更清楚地说明这一点。 【参考方案1】:

如果您尝试在 C = T 时选择 A 或在 C = F 时选择 B,那么您可以只使用案例语句

Select (Case When C.val = TRUE Then A.val Else B.Val END) AS D
From Table

【讨论】:

谢谢!效果很好。不知道我是如何略过“CASE”的存在的【参考方案2】:

您可以为此使用CASE 语法。

SELECT CASE WHEN C.val = 'T' THEN A.val ELSE B.val END as yourField

【讨论】:

以上是关于根据第三列动态选择两列之一[重复]的主要内容,如果未能解决你的问题,请参考以下文章

基于sql中的第三列返回两列的所有组合

如何将所有行的两列总和为第三列

如何组合两列以使第三列按方法从组中获取属性?

SQL Server:按两列分组,并将第三列与两组的分叉相加

根据 2 列和第三列中的条件删除重复行

比较两个excel的两列并返回第三列