回答

收藏

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运算符。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则