【发布时间】:2020-06-26 03:45:39
【问题描述】:
我有一张可以装一到四个路灯的杆子桌。每行都有一个灯杆 ID 和路灯类型(描述)。我需要 ID 是唯一的,每个可能的路灯都有一列。类型/描述可以是 26 个字符串中的任何一个。
我有这样的事情:
ID Description
----------------
1 S 400
1 M 200
1 HPS 1000
1 S 400
2 M 400
2 S 250
3 S 300
我需要什么:
ID Description_1 Description_2 Description_3 Description_4
------------------------------------------------------------------
1 S 400 M 200 HPS 1000 S 400
2 M 400 S 250
3 S 300
描述在描述列中的填充顺序并不重要,例如对于 ID = 1,HPS 1000 值可能位于描述列 1、2、3 或 4 中。因此,只要所有值都存在。
我试图调整它,但我认为这不是正确的工具。
select * from table t
pivot (
max(Description) for ID in (1, 2, 3))
因为有大约 3000 个 ID,我最终会得到一个大约 3001 行宽的表格...
我也看了这个Oracle SQL Cross Tab Query 但是情况不太一样。
解决这个问题的正确方法是什么?
【问题讨论】:
-
你知道要生成的最大列数吗?
-
为什么 s 400 重复了两次?如果相同的描述重复 100 次会发生什么?
-
@Sam 你可以在一根灯杆上安装许多相同类型的路灯。路灯有26种。因此,值会经常重复。
-
@GordonLinoff 这将是 ID 加上 4 个可能的描述,所以总共 5 个。
标签: sql database oracle select pivot