根据第三列动态选择两列之一[重复]
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
【讨论】:
以上是关于根据第三列动态选择两列之一[重复]的主要内容,如果未能解决你的问题,请参考以下文章