通过自定义函数查询显示多列

比如现在有表tb1(比如有1000行),有列colA,colB,colC...colH,现在想类似select funcTest() from tb1通过自定义函数funcTest(返回比如3个计算结果)返回3个计算结果列,请问如何实现?

比如def funcTest(colA,colB,colD){

ret1=xx

ret2=yy

ret3=zz

return ret1,ret2,ret3

}

期望通过类似select funcTest(colA,colB,colD) from tb1 返回1000行*3列的表。但如果select funcTest(colA,colB,colD) from tb1显示的是一个3行(ret1,ret2,ret3每个列表占一行)*1列的表。如果select transpose(funcTest(colA,colB,colD)) from tb1显示的是1000行*1列,这时候行数是对了,但是每行的值却又是[ret1,ret2,ret3]的列表。

请先 登录 后评论

1 个回答

wale
t=table(1..10 as colA,11..20 as colB,21..30 as colC)
def funcTest(colA,colB,colC){
ret1=colA*10
ret2=colB*10
ret3=colC*10
return ret1,ret2,ret3
}
select funcTest(colA,colB,colC) as `a`b`c from t

显示如下:

a	b	c
10	110	210
20	120	220
30	130	230
40	140	240
50	150	250
60	160	260
70	170	270
80	180	280
90	190	290
100	200	300

请先 登录 后评论
  • 1 关注
  • 0 收藏,571 浏览
  • 迈拓将 提出于 2023-07-17 10:22

相似问题