首页 > 解决方案 > SQL:跨表分区的 CROSS JOIN

问题描述

我有下表

session_id | page_viewed
    1      |     A
    1      |     B
    1      |     C
    2      |     B
    2      |     E

我想做的是 page_viewed 列与其自身的交叉连接,但交叉连接是在 session_id 的分区上完成的。因此,从上面的表中查询将返回:

session_id | page_1 | page_2
    1      |    A   |   A
    1      |    A   |   B
    1      |    A   |   C
    1      |    B   |   A
    1      |    B   |   B
    1      |    B   |   C
    1      |    C   |   A
    1      |    C   |   B
    1      |    C   |   C
    2      |    B   |   B
    2      |    B   |   E
    2      |    E   |   B
    2      |    E   |   E

我今天研究了窗口函数,试图找到解决方法,但似乎无法使用连接函数。任何人都可以帮忙吗?

标签: sql

解决方案


嗯。. . 你似乎想要一个自我加入:

select t1.session_id, t1.page_viewed as page_1, t2.page_viewed as page_2
from t t1 join
     t t2
     on t1.session_id = t2.session_id
order by t1.session_id, t1.page_viewed, t2.page_viewed;

推荐阅读