• 软件
  • [HELP]标准SQL语句:如何实现如下row-column转换。

原始数据相貌:

<br />
> mydata</p>
<p>   month count1 count2 count3<br />
1 201301    100    110     50<br />
2 201302    150    160     60<br />
3 201303    200    210     50<br />


预期结果:
<br />
>final_data</p>
<p>count_all  201301 201302 201303<br />
1 count1       100    150    200<br />
2 count2       110    160    210<br />
3 count3        50     60     50<br />


在标准SQL语句下,如何实现这样的行列转换?
</p>

回复 第1楼 的 jasmine_007:

据我所知标准的SQL是不支持转置的,因为要修改表的结构。这个功能通常是由具体的数据库软件自己编写函数实现的。

回复 第1楼 的 jasmine_007:

循环提列数据,然后创建临时表,转成行数据插入临时表即可。不过,其实关键在于列的数据类型设置问题。我建议你在数据导入前就调整好数据较好。如果表不大的话,用R的t()函数加工一下,或者直接awk处理一下亦可。

回复 第2楼 的 Ihavenothing:谢谢!原来如此。

回复 第3楼 的 zggjtsgzczh:很straightforward方法,谢谢!

我之前是用大量case when話句去實現的

8 天 后