我正在为一个提要写一个摘录,接收系统希望将单个列中的值排列在各个列中。
以下是数据的存储方式:
| 人员ID|业余爱好|
| - -----|- -----|
| 一百二十三|园艺|
| 一百二十三|徒步旅行|
| 一百七十六|阅读|
| 三六六|徒步旅行|
| 三六六|园艺|
| 三六六|足球|
下面是我需要查询生成的内容。请注意,我需要它以查询的形式出现,以便每天晚上都能运行它来提取提要。还要注意,爱好需要按asc排序,因此每个人的每一列可能会有不同的值,如下所示:
| 人员ID|爱好1|爱好2|爱好3|爱好4|爱好5|爱好6|
| - -----|- -----|- -----|- -----|- -----|- -----|- -----|
| 一百二十三|园艺|徒步旅行|||||
| 一百七十六|阅读||||||
| 三六六|足球|园艺|徒步旅行||||
就像是listagg的反义词我被卡住了。任何帮助将不胜感激!
我试着对爱好进行排序并返回第一行,但我不知道如何获得第2-6行。
在每个人都跳到我问另一个透视表问题之前,这不是求和值,列也没有定义(园艺y/n,徒步y/n等),所以我以前使用的透视表代码不适用于这种情况-除非我想错了??
2条答案
按热度按时间mbyulnm01#
我只需要为每一个派生一个行号,然后使用条件聚合。
Fiddle
fcipmucu2#
这是使用
PIVOT
的另一种方法:结果:
Demo here