gpt4 book ai didi

PostgreSQL 基于多个条件更新列

转载 作者:行者123 更新时间:2023-11-29 14:04:23 25 4
gpt4 key购买 nike

设置:

我使用 PostgreSQL 9.1.2 并有一个如下所示的基本表,其中我有 4 个二进制列,可以取值 Y 或 N。这些列也主要包含 Null 值,我在下表:

    Binary Col 1   Binary Col 2   Binary Col 3   Binary Col 4   Summary Col
------------ ------------ ------------ ------------ -----------
1. Y N - N 1
2. - Y N Y 2
3. N N - N 0
4. - - - - -
5. Y Y Y Y 4

问题:

我想在我的表中包含一个摘要列,该列根据这 4 个二进制列中出现的“Y”的数量进行填充。我在上表中给出了 5 个示例条目来展示所需的输出。需要注意的一件重要事情是,我希望能够区分条目 3(未观察到“Y”)和条目 4(所有二进制列均为空)等情况。这是一次性的工作,我不担心这个重复的列会如何影响我的表的事务处理速度。

我查看了很多 PostgreSQL“更新表”示例,还查看了手册 here .但是,我还找不到具有多个条件的更新过程的示例,我相信这是这里所需要的。

或者我可能完全错了,解决方案需要 SQL 函数或触发器,有什么提示或建议吗?

最佳答案

SQL Fiddle

select
c1, c2, c3, c4,
(coalesce(c1, '') = 'Y')::integer
+ (coalesce(c2, '') = 'Y')::integer
+ (coalesce(c3, '') = 'Y')::integer
+ (coalesce(c4, '') = 'Y')::integer
total_Y,
(c1 is null)::integer
+ (c2 is null)::integer
+ (c3 is null)::integer
+ (c4 is null)::integer
total_null
from t

关于PostgreSQL 基于多个条件更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15642597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com