有没有一种方法可以使用COUNT()
编写查询来计算数值,而不必列出50多列?
示例:
零件号 | BOX1 | BOX2 | >Box3 | ||||
---|---|---|---|---|---|---|---|
NF342-2 | 1 | 2 | 234-23F | 4 | Null | >Null |
您可以使用JSON来解决这个问题。所以JSON有一个对象值类型。我们将只筛选数字类型的对象(列(。示例:
select s1.*, s2.total from examples.table1 s1
inner join
(
select main.partnumber, sum((main.pval::text)::integer) as total from (
select a1.partnumber, json_typeof(t1.pval) as ptype, t1.pkey, t1.pval from (
select aa.partnumber, json_strip_nulls(row_to_json(aa)) as pdata from examples.table1 aa
) a1
inner join json_each(a1.pdata) t1(pkey, pval) on true
) main
where main.ptype = 'number'
group by main.partnumber
) s2 on s1.partnumber = s2.partnumber
选择的结果:
零件号 | box1 | box2 | box3>box4 | |||
---|---|---|---|---|---|---|
NF342-2 | 1 | 2 | <1>>td>4 | |||
234-23F | 4 | 4 |