开发者

SQL行转列与列转行

开发者 https://www.devze.com 2022-12-12 10:26 出处:网络 作者: Python学习与数据挖掘
1.数据集 +---+----------+ |id |login_date| +---+----------+ |01 |2021-02-28| |01 |2021-03-01| |01 |2021-03-02|

1.数据集

+---+----------+
|id |login_date|
+---+----------+
|01 |2021-02-28|
|01 |2021-03-01|
|01 |2021-03-02|
|http://www.cppcns.com01 |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)) cw
from datawww.cppcns.com
group by id;

结果:

+---+----------------------------------------------------------------------------+

|id |cw                                                     &nb编程客栈sp;                    |

+---+----------------------------------------------------------------------------+

|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                                                                  |

+---+------------------www.cppcns.com----------------------------------------------------------+

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

select id, login_date
from 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行转列与列转行的文章就介绍到这了,更多相关SQL行转编程客栈列与列转行内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号