大家好,我在try 从一个行值非零的表中获取列名时遇到了问题.以以下样本数据为例:
create table your_table
(
XUUID VARCHAR(100),
COUNT1 INT,
COUNT2 INT,
COUNT3 INT,
COUNT4 INT
);
INSERT INTO your_table values
('id1', 2, 3, 0, 0),
('id2', 0, 0, 1, 0),
('id3', 0, 0, 0, 0),
('id4', 3, 0, 0, 0)
我希望结果的格式如下:
xuuid | non_zero_col_agg |
------|----------------------|
id1 | ['count1', 'count2'] |
id2 | ['count3'] |
id3 | [] |
id4 | ['count1'] |
我try 使用以下javascript函数来实现这一点:
create or replace function labels(count1 INT, count2 INT, count3 INT, count4 INT)
returns listagg
language javascript
strict
as
$$
var res = [];
var dict = {
'count1' : COUNT1,
'count2' : COUNT2,
'count3' : COUNT3,
'count4' : COUNT4
};
for (var key in dictionary){
if (dict[key] > 0) {
res.push(key)
}
};
return(res);
$$
;
但它返回了以下错误:
有办法解决这个问题吗?解决方案可以作为函数,也可以不作为函数,我 Select 作为函数,因为我不知道使用常规SQL的方法.
谢谢