Направете GROUP BY
, използвайте COUNT
(което отчита само ненулеви стойности):
select id,
count(value1) as value1,
count(value2) as value2,
count(value3) as value3
from table1
group by id
Редактиране :
Ако стойностите не са null, а '.' (или нещо друго), използвайте case
изрази за извършване на условно броене, нещо като:
select id,
count(case when value1 <> '.' then 1 end) as value1,
count(case when value2 <> '.' then 1 end) as value2,
count(case when value3 <> '.' then 1 end) as value3
from table1
group by id