根据第三列动态选择两列中的一列

时间:2015-09-15 21:30:03

标签: sql postgresql

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

2 个答案:

答案 0 :(得分:5)

如果您尝试选择A,如果C = T或B,如果C = F,那么您可以使用案例陈述

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

答案 1 :(得分:0)

您可以使用CASE语法。

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