Har kommit så långt att den räknar ut 1 - 9 och X rätt. Men när jag försöker räkna ut "Ogiltiga" värden blir det fel.
select g.cat,
sum(case when g.val = t.val and g.val not in ('X', 'x') then 1 else null end) as '1 - 9',
sum(case when g.val = t.val and g.val not in ('1', '2', '3', '4', '5', '6', '7', '8', '9') then 1 else null end) as 'X',
sum(case when g.val != t.val then 1 else null end) as 'Ogiltig'
from grupp g join t1 t on g.cat = t.cat
group by g.cat
Mina testtabeller ser ut såhär:
Tabell1 (giltiga värden)
cat val
1 1
1 2
Tabell2 (population)
cat val
1 1
1 a
Kör jag detta får jag
cat 1-9 X Ogiltig
1 1 null 3
Alltså 3 på ogiltig när det borde varit 1. Jag tror att felet beror på att "join" jämför mina värden flera gånger mot alla ogiltiga värden i tabell1 men hur får man bort det?