Führen Sie ein GROUP BY
durch , verwenden Sie COUNT
(der nur Nicht-Null-Werte zählt):
select id,
count(value1) as value1,
count(value2) as value2,
count(value3) as value3
from table1
group by id
Bearbeiten :
Wenn die Werte nicht null sind, sondern '.' (oder etwas anderes), verwenden Sie case
Ausdrücke zum bedingten Zählen, so etwas wie:
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