Zhu*_*arb 0 postgresql case coalesce sql-update postgresql-9.1
设置:
我使用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
Run Code Online (Sandbox Code Playgroud)
问题:
我想在我的表中包含一个Summary List,它根据这4个二进制列中出现的'Y'的数量来填充.我在上表中给出了5个示例条目来展示所需的输出.需要注意的一件重要事情是,我希望能够区分条目3(没有'Y'观察到)和条目4之类的情况(所有二进制列都为空).这是一次性工作,我没有关于这个重复列如何影响我的表的事务速度的性能问题.
我查看了很多PostgreSQL"更新表"示例,并在此处查看了手册.但是,我找不到具有多个条件的更新过程的示例,我相信这是必需的.
或者可能是我完全错了,解决方案需要SQL函数或触发器,任何提示或建议?
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1307 次 |
| 最近记录: |