原始数据
比如有如此表结构定义:

假如查询数据如下:
select 
    dt as "日期",
    bj_count as "北京", sh_count as "上海",
    gz_count as "广州", sz_count as "深圳"
from city_stats
order by dt
---------------------------------------------------------
|    日期     |   北京    |   上海   |   广州    |  深圳   |
---------------------------------------------------------
| 2023-09-04 |   1111   |   1122   |   1133   |  1144   |
| 2023-09-05 |   2211   |   2222   |   2233   |  2244   |
| 2023-09-06 |   3311   |   3322   |   3333   |  3344   |
---------------------------------------------------------期望效果
------------------------------------
|      日期     |   城市   |   统计  |
------------------------------------
|  2023-09-04  |   北京   |   1111  |
|  2023-09-04  |   上海   |   1122  |
|  2023-09-04  |   广州   |   1133  |
|  2023-09-04  |   深圳   |   1144  |
|  2023-09-05  |   北京   |   2211  |
|  2023-09-05  |   上海   |   2222  |
|  2023-09-05  |   广州   |   2233  |
|  2023-09-05  |   深圳   |   2244  |
|  2023-09-06  |   北京   |   3311  |
|  2023-09-06  |   上海   |   3322  |
|  2023-09-06  |   广州   |   3333  |
|  2023-09-06  |   深圳   |   3344  |
------------------------------------解决方案
采用笛卡尔积方式"CROSS JOIN":
select 
    s.dt as "日期", 
    c.city_name as "城市",
    c.city_count as "统计"
from city_stats as s
cross join LATERAL(
    VALUES
        (1,'北京',s.bj_count),
        (2,'上海',s.sh_count),
        (3,'广州',s.gz_count),
        (4,'深圳',s.sz_count)
) as c (city_order,city_name,city_count)
order by s.dt, c.city_order执行结果:




















