我想转换
inpvacart inpvapvta inpvapvt1 inpvapvt2 inpvapvt3 inpvapvt4
CS-279 270.4149 0.0000 0.0000 0.0000 0.0000
AAA5030 1.9300 1.9300 1.6212 0.0000 0.0000
查询
select
inpvacart,
inpvapvta,
inpvapvt1,
inpvapvt2,
inpvapvt3,
inpvapvt4
from inpva;
进入这个
inpvacart line value
CS-279 1 270.4149
CS-279 2 0.00000
CS-279 3 0.00000
CS-279 4 0.00000
CS-279 5 0.00000
AAA5030 1 1.9300
AAA5030 2 1.9300
AAA5030 3 1.6212
AAA5030 4 0.0000
AAA5030 5 0.0000
我试过这个
select s.inpvacart,l.lista,l.resultados
from inpva as s,
table(values(1,s.inpvapvta),
(2,s.inpvapvt1),
(3,s.inpvapvt2),
(4,s.inpvapvt3),
(5,s.inpvapvt4))
)as l(lista,resultados);
但它在informix 9中不起作用
有没有办法将行转置为列?
谢谢
答案 0 :(得分:2)
我不认为Informix有任何unpivot
运算符可以将列转换为行,就像MSSQL一样,但是一种方法是手动转置列,然后使用union
创建像这样的一套:
select inpvacart, 1 as line, inpvapvta as value from inpva
union all
select inpvacart, 2 as line, inpvapvt1 as value from inpva
union all
select inpvacart, 3 as line, inpvapvt2 as value from inpva
union all
select inpvacart, 4 as line, inpvapvt3 as value from inpva
union all
select inpvacart, 5 as line, inpvapvt4 as value from inpva
order by inpvacart, line;
它不是很漂亮,但它应该有用。