编写查询的另一种方法是在没有长列表的情况下对一行中的值进行计数



有没有一种方法可以使用COUNT()编写查询来计算数值,而不必列出50多列?

示例:

>>
零件号 BOX1 BOX2Box3
NF342-2 1 2 234-23F 4 NullNull

您可以使用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

选择的结果:

box3>合计<1>>td>JKW23-34
零件号box1box2box4
NF342-2124
234-23F44

最新更新