我应该使用explode还是Unpivot?

问题描述 投票:0回答:1

我有一个由“无合同”、“过去”、“当前”和“过期”列组成的表格。

+-------+------+-------+-------+
|No.Cont| Past |Current|Expired|
+-------+------+-------+-------+
|113    |  X   |       |       |
+-------+------+-------+-------+
|114    |      |   X   |       |
+-------+------+-------+-------+
|115    |  X   |       |   X   |
+-------+------+-------+-------+

我想把桌子改成这样

+-------+---------+
|No.Cont| Category|
+-------+---------+
|113    |   Past  |
+-------+---------+
|114    | Current |
+-------+---------+
|115    |   Past  |
+-------+---------+
|115    | Expired |
+-------+---------+

我被告知创建数组[过去,当前,过期],然后分解它。 但是,我不明白这些步骤。 我真的很感激任何帮助。

sql databricks explode unpivot
1个回答
0
投票

您可以使用横向连接和值子句:

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'
© www.soinside.com 2019 - 2024. All rights reserved.