假设我有列is_return_foo
,is_return_bar
和is_return_baz
.
如果上述任何一项分别设置为 true,我需要返回 foo、bar、baz 列...
是CASE WHEN
最好的选择吗?
就像是:
SELECT
CASE is_return_foo WHEN true THEN foo ELSE null
CASE is_return_bar WHEN true THEN bar ELSE null
CASE is_return_baz WHEN true THEN baz ELSE null
another_column
FROM
my_table
更新
基本上我想根据开/关标志返回列。因此,如果标志 A 开启则返回 A 列值,如果标志 B 开启则返回 B 列值。
也许我们可以说基于权限但更细粒度。
假设您有电子邮件,其中包含收件人、发件人、正文、标题、阅读、阅读时间。
因此,标准用户只能看到来自、正文,而高级客户可能被配置为还读取标题、读取和读取时间。
但是希望每列而不是列组。
如果它是一组列,那么我们可以很容易地说 CASE WHEN Premium THEN 标题、阅读、阅读时间。
更新 2
我认为我们可以进行基于组的“权限”,因此如果您是银牌会员,您只能看到一些字段,但如果您是金牌会员,您可以看到所有字段。