给定一个表:
label | x | y | z
-------+-------+-------+------
AAA | NULL | 7 | 9
BBB | 0 | 10 | 0
CCC | 12 | NULL | 0
create table coords (label text, x integer, y integer, z integer);
insert into coords(label,x,y,z)
values
('AAA',NULL,7,9),
('BBB',0,10,0),
('CCC',12,NULL,0);
我需要label
在它们不是 NULL 或 0 时插入另一个表值。所以最后的结果会是:
label | coord | value |
------+-------+-------+
AAA | y | 7 |
AAA | z | 9 |
BBB | y | 10 |
CCC | x | 12 |
我尝试了不同的方法OVER/PARTITION
,但可能我遗漏了一些东西。有什么帮助吗?
这真的很简单:
或使用
LATERAL
: