我在表中的数据如下,val1,val2,val3
是双重类型的。x
表示记录具有旧值并y
表示新值。(oldVal,newVal)
所以我们需要根据 x 和 y 值连接各个 col 中的所有双精度值
ID,region,status,val1,val2,val3
1, aa, x, 10, 11, 13
1, aa, y, 12, 14, 15
2, bb, x, null, null, null
2, bb, y, null, null, null
预期输出,oldVal,newVal 是 varchar 类型
ID,region,oldVal,newVal
1, aa,10-11-13, 12-14-15
1, bb,null, null
如何进行反规范化以获得预期的输出?
注意:如果其中任何一个值为(val1, val2, val3)
空值,则不应考虑空值。
1,2,null > 1-2
您可以尝试将条件聚合函数与CONCAT_WS
函数一起使用。
SELECT ID,
region,
MAX(CASE WHEN status = 'x' THEN CONCAT_WS('-',val1,val2,val3) END) oldVal,
MAX(CASE WHEN status = 'y' THEN CONCAT_WS('-',val1,val2,val3) END) newVal
FROM T
GROUP BY ID,region
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句