我有一个由“无合同”、“过去”、“当前”和“过期”列组成的表格。
+-------+------+-------+-------+
|No.Cont| Past |Current|Expired|
+-------+------+-------+-------+
|113 | X | | |
+-------+------+-------+-------+
|114 | | X | |
+-------+------+-------+-------+
|115 | X | | X |
+-------+------+-------+-------+
我想把桌子改成这样
+-------+---------+
|No.Cont| Category|
+-------+---------+
|113 | Past |
+-------+---------+
|114 | Current |
+-------+---------+
|115 | Past |
+-------+---------+
|115 | Expired |
+-------+---------+
我被告知创建数组[过去,当前,过期],然后分解它。 但是,我不明白这些步骤。 我真的很感激任何帮助。
您可以使用横向连接和值子句:
select t.no, lj.name
from t
join lateral (values
('past', t.past),
('current', t.current),
('expired', t.expired)
) as lj(name, value)
where lj.value = 'x'