sql - PostgreSQL 交叉表转置行到列
问题描述
大家好,我正在尝试将行查询结果转换为每列 1 行
第一个查询是从 sku 中选择 *; 结果是:
id sku sku_code travel_code
1 sku1 1 1
2 sku1 2 2
3 sku1 3 3
4 sku1 4 4
5 sku1 5 5
6 sku1 6 6
7 sku1 7 7
8 sku2 8 8
9 sku2 9 9
10 sku2 10 10
11 sku2 11 11
12 sku2 12 12
13 sku2 13 13
14 sku2 14 14
15 sku3 15 15
16 sku3 16 16
17 sku3 17 17
18 sku3 18 18
19 sku3 19 19
20 sku3 20 21
21 sku3 21 21
预期输出是
SKU SKU_CODE TRAVEL_CODE
sku1 1 2 3 4 5 6 7 1 2 3 4 5 6 7
sku2 8 9 10 11 12 13 14 8 9 10 11 12 13 14
sku3 15 16 17 18 19 20 21 15 16 17 18 19 20 21
没有标题是好的
解决方案
您可以使用grouping
withmin
和max
聚合函数
with tab(sku, sku_cod, travel_code) as
(
select 'sku1',109,'01' union all
select 'sku2',209,'02' union all
select 'sku2',309,'03' union all
select 'sku1',409,'04'
)
select sku, min(sku_cod) as sku_cod1, max(sku_cod) as sku_cod2,
min(travel_code) as travel_code1, max(travel_code) as travel_code2
from tab
group by sku
order by sku;
sku sku_cod1 sku_cod2 travel_code1 travel_code2
sku1 109 409 01 04
sku2 209 309 02 03
推荐阅读
- apache-kafka - 消费者应用程序在从多个分区读取记录时导致重复
- ios - 将 ScrollView 与 StackView 一起用作子视图,并将 UIViews 用作 StackView 的子视图
- c++ - 可以在我第一次使用 std::distance 时使用一些清晰度
- c# - Visual Studio Code 找不到类
- django - 我可以限制 Django 的 Page not found 的显示吗?
- javascript - JavaScript 中的词搜索 II 算法
- javascript - gem-puzzle 的新桌子不会取代旧桌子
- javascript - Remarkable 为 < 创建 <
- node.js - 如何确保所有事情都完成或没有完成?
- python - 为什么 Python 子进程无法正确捕获信号?