SQL合并是一样的ID但两行列值不同(Oracle)
技术问答
175 人阅读
|
0 人回复
|
2023-09-14
|
我在尝试同样的ID但不同列值的行合并为一个。0 ?. D9 ~ n& ~" T- n6 s2 G
例如 : w, ^9 j4 a/ `3 ]' G& D9 p; @
(table1) id colour red blue 2 green 2 red结果是:" @/ w9 ^, h% C$ L
id colour1 colour2 1 red blue 2 green red或者
. q4 O4 ^$ G3 I( E8 S$ B id colour red,blue 2 green,red或以某种方式连接上述内容的任何其他变体。
. ?, O4 l0 O2 P3 J) q任何帮助都将不胜感激!提前致谢。
3 {* Q( D1 u) d8 F4 |* B
$ u. V2 K v# a+ f/ W$ H# T 解决方案: 8 R- Q) j& d/ C
请先阅读我的评论-除非只用于报告的目的,否则你甚至不会考虑这样做,你想知道如何在普通人中SQL这样做(而不是使用报告的正确解决方案)。. f9 n6 ]/ C1 A- o
第二种格式是最简单的,特别是如果你不关心颜色的顺序:
5 [, h5 K: [3 ^select id,listagg(colour,',') within group (order by null)from table1group by idorder by null表示随机订购。如果您想订购其他商品,请在中间orderby使用listagg()。比如颜色要按字母顺序排列,可以说within group (order by colour)。; Z- s) K! Q, Z1 Q4 J
对于第一种格式,您需要先验限制列数,其操作模式取决于您使用的列数Oracle版本(限制应始终包含在这里和其他讨论区发布的每一个问题中)
% l8 x* a4 R; ~. y" \% e' m)。这个概念叫做透视。从版本11开始,Oracle具有您可以使用的显式PIVOT运算符。 |
|
|
|
|
|