我在表中的資料如下,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
uj5u.com熱心網友回復:
您可以嘗試將條件聚合函式與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
sqlfiddle
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/448895.html
上一篇:如何總結不同列的條件
下一篇:在可能沒有資料的列上自聯接
