【发布时间】:2020-01-18 20:29:41
【问题描述】:
所以这是我的问题, 以下是当前表格
|userid|tv1|tv2|tv3
|123|0|1|2
|125|1|2|0
所以我希望它看起来像:
|userid|tv
|123|tv2
|123|tv3
|123|tv3
|125|tv1
|125|tv2
|125|tv2
【问题讨论】:
所以这是我的问题, 以下是当前表格
|userid|tv1|tv2|tv3
|123|0|1|2
|125|1|2|0
所以我希望它看起来像:
|userid|tv
|123|tv2
|123|tv3
|123|tv3
|125|tv1
|125|tv2
|125|tv2
【问题讨论】:
您需要一个数字表。对于小数字,类似这样:
with n as (
select 1 as n union all
select 2 union all
select 3
)
select userid, 'tv1' as tv
from t join
n
on t.tv1 <= n.n
union all
select userid, 'tv2' as tv
from t join
n
on t.tv2 <= n.n
union all
select userid, 'tv3' as tv
from t join
n
on t.tv3 <= n.n;
数字表需要足够大以处理表中的最大值。
【讨论】: