涉及列不确定的行转列

Postgresql 数据库的查询结果返回 6 列,第 1 列是分组列,第 2 列是组内的 Value 列,第 3-6 列是组内的 Key 列,一条记录只有一个 Key 列有值,其他 Key 列为空,每条记录有值的 Key 的位置不确定。

Food

Value

Characteristics

Color

Location

Date

Fruit

10

total count




Fruit

3

apple




Fruit

1

orange




Fruit

4

banana




Fruit

2

cherry




Fruit

5


red



Fruit

4


yellow



Fruit

1


blue



现在要保持分组列不变,将组内明细由行转列,非空的 Key 列的值转为新列名,Vale 列的值转为新列值,。

Food

total count

apple

orange

banana

cherry

red

yellow

blue

Fruit

10

3

1

4

2

5

4

1

编写SPL代码


 A

1

=postgresql.query("select * from tb where Food=?”,”Fruit”)

2

=A1.pivot(Food;[#3,#4,#5,#6].ifn(),Value)

A1:通过JDBC查询数据库。

A2:用pivot函数将这组记录由行转列。第1个参数是分组列,第2个参数是Key的列名,ifn函数取集合中第1个非空的成员。第3个参数是Value列。

问题来源:https://stackoverflow.com/questions/78372861/using-sql-is-there-a-way-to-transform-a-dataset-that-makes-new-columns-for-data