Postgresql 从表中的列中选择特定的数字到另一个表中
我有一张叫做processtime的桌子Postgresql 从表中的列中选择特定的数字到另一个表中,postgresql,psql,pgadmin,Postgresql,Psql,Pgadmin,我有一张叫做processtime的桌子 id | task1id | task1occ | task1time | task2id | task2occ | task2time | task3id | task3occ | task3time | task4id | task4occ | task4time | task5id | task5occ | task5time ----+---------+----------+-----------+---------+----------+
id | task1id | task1occ | task1time | task2id | task2occ | task2time | task3id | task3occ | task3time | task4id | task4occ | task4time | task5id | task5occ | task5time
----+---------+----------+-----------+---------+----------+-----------+---------+----------+-----------+---------+----------+-----------+---------+----------+-----------
10 | 9 | 0 | 300 | | | | | | | | | | | |
7 | 5 | 1 | 20 | 6 | 1 | 45 | 1 | 0 | 60 | | | | | |
9 | 6 | 1 | 45 | 7 | 1 | 120 | 2 | 0 | 110 | | | | | |
8 | 5 | 1 | 20 | 6 | 1 | 45 | 3 | 1 | 200 | 1 | 0 | 60 | 4 | 1 | 300
和一个名为test1的表
id | task1time | task2time | task3time | task4time | task5time
----+-----------+-----------+-----------+-----------+-----------
我试图做的是,如果processtime中任何occ列中的值=0,那么任务时间将显示在test1时间列中
所以test1表应该如下所示:
id | task1time | task2time | task3time | task4time | task5time
----+-----------+-----------+-----------+-----------+-----------
10 | 300 | | | |
7 | | | 60 | |
9 | | | 60 | |
8 | | | | 60 |
我尝试过使用OR和and函数,但它们不起作用,我在想IF函数可能会起作用,但不知道从哪里开始
非常感谢
Dave这里是一个基本查询,它应该可以按照您的意愿工作:
SELECT
id,
CASE WHEN task1occ = 0 THEN task1time END AS task1time,
CASE WHEN task2occ = 0 THEN task2time END AS task2time,
CASE WHEN task3occ = 0 THEN task3time END AS task3time,
CASE WHEN task4occ = 0 THEN task4time END AS task4time,
CASE WHEN task5occ = 0 THEN task5time END AS task5time
FROM yourTable;
如果要用此信息填充
test1
表,则可以使用插入到。。。选择
,其中,SELECT
就是上面的查询。等等,test1
现在还存在吗?你似乎在要求两件不同的事情。您想显示建议的输出,还是想用该数据填充test1
?