【问题标题】: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 语句中执行此操作,因为我目前正在以编程方式执行此操作,这会占用不必要的资源。

【问题讨论】:

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

标签: sql postgresql


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多