GBase 8a
其他
文章

postgresql中unnest对应的一种改写办法

发表于2025-07-28 14:39:3617次浏览0个评论

-- 修改前

select unnest(array['0','1','2','3','4','5','6','7','10','15','20','25','30','45','60','90'])  as days
   ,unnest(array[overdue_fz0,overdue_fz1,overdue_fz2,overdue_fz3,overdue_fz4,overdue_fz5,overdue_fz6,overdue_fz7,overdue_fz10,overdue_fz15,overdue_fz20,overdue_fz25,overdue_fz30,overdue_fz45,overdue_fz60,overdue_fz90]) as rate_fz
   ,unnest(array[overdue_fm0,overdue_fm1,overdue_fm2,overdue_fm3,overdue_fm4,overdue_fm5,overdue_fm6,overdue_fm7,overdue_fm10,overdue_fm15,overdue_fm20,overdue_fm25,overdue_fm30,overdue_fm45,overdue_fm60,overdue_fm90]) as rate_fm
from t2

-- 使用union all 展开,实现unnest功能
-- 修改后

SELECT '0' as days, overdue_fz0 as rate_fz, overdue_fm0 as rate_fm FROM t2 UNION ALL 
SELECT '1' as days, overdue_fz1 as rate_fz, overdue_fm1 as rate_fm FROM t2 UNION ALL 
SELECT '2' as days, overdue_fz2 as rate_fz, overdue_fm2 as rate_fm FROM t2 UNION ALL 
SELECT '3' as days, overdue_fz3 as rate_fz, overdue_fm3 as rate_fm FROM t2 UNION ALL 
SELECT '4' as days, overdue_fz4 as rate_fz, overdue_fm4 as rate_fm FROM t2 UNION ALL 
SELECT '5' as days, overdue_fz5 as rate_fz, overdue_fm5 as rate_fm FROM t2 UNION ALL 
SELECT '6' as days, overdue_fz6 as rate_fz, overdue_fm6 as rate_fm FROM t2 UNION ALL 
SELECT '7' as days, overdue_fz7 as rate_fz, overdue_fm7 as rate_fm FROM t2 UNION ALL 
SELECT '10' as days, overdue_fz10 as rate_fz, overdue_fm10 as rate_fm FROM t2 UNION ALL 
SELECT '15' as days, overdue_fz15 as rate_fz, overdue_fm15 as rate_fm FROM t2 UNION ALL 
SELECT '20' as days, overdue_fz20 as rate_fz, overdue_fm20 as rate_fm FROM t2 UNION ALL 
SELECT '25' as days, overdue_fz25 as rate_fz, overdue_fm25 as rate_fm FROM t2 UNION ALL 
SELECT '30' as days, overdue_fz30 as rate_fz, overdue_fm30 as rate_fm FROM t2 UNION ALL 
SELECT '45' as days, overdue_fz45 as rate_fz, overdue_fm45 as rate_fm FROM t2 UNION ALL 
SELECT '60' as days, overdue_fz60 as rate_fz, overdue_fm60 as rate_fm FROM t2 UNION ALL 
SELECT '90' as days, overdue_fz90 as rate_fz, overdue_fm90 as rate_fm FROM t2
;
 

评论

登录后才可以发表评论