千家信息网

SQL行转列与列转行的方法

发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,本文小编为大家详细介绍"SQL行转列与列转行的方法",内容详细,步骤清晰,细节处理妥当,希望这篇"SQL行转列与列转行的方法"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1
千家信息网最后更新 2024年09月21日SQL行转列与列转行的方法

本文小编为大家详细介绍"SQL行转列与列转行的方法",内容详细,步骤清晰,细节处理妥当,希望这篇"SQL行转列与列转行的方法"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

1.数据集

+---+----------+|id |login_date|+---+----------+|01 |2021-02-28||01 |2021-03-01||01 |2021-03-02||01 |2021-03-04||01 |2021-03-05||01 |2021-03-06||01 |2021-03-08||02 |2021-03-01||02 |2021-03-02||02 |2021-03-03||02 |2021-03-06||03 |2021-03-06|+---+----------+

以"连续登录"中的数据为例:

select id,        concat_ws(',',collect_list(login_date)) cwfrom datagroup by id;

结果:

+---+----------------------------------------------------------------------------+
|id |cw |
+---+----------------------------------------------------------------------------+
|01 |2018-02-28,2018-03-01,2018-03-02,2018-03-04,2018-03-05,2018-03-06,2018-03-08|
|02 |2018-03-01,2018-03-02,2018-03-03,2018-03-06 |
|03 |2018-03-06 |
+---+----------------------------------------------------------------------------+

以上面SQL生成的数据为基准,执行下列SQL:

select id, login_datefrom t lateral  view explode(split(cw,','))  b AS login_date;

结果:

+---+----------+
|id |login_date|
+---+----------+
|01 |2018-02-28|
|01 |2018-03-01|
|01 |2018-03-02|
|01 |2018-03-04|
|01 |2018-03-05|
|01 |2018-03-06|
|01 |2018-03-08|
|02 |2018-03-01|
|02 |2018-03-02|
|02 |2018-03-03|
|02 |2018-03-06|
|03 |2018-03-06|
+---+----------+

读到这里,这篇"SQL行转列与列转行的方法"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

0