pulseMedlem sedan nov. 200373 inlägg Hej, har ett till problem som jag hoppas få hjälp med.
--tabell 1 innehåller giltiga värden för varje kategori
kategori giltigt
10 2
10 3
15 X
15 4
16 X
--tabell 2 är populationen och ser ut såhär
kategori värde
10 2 --giltigt
10 5 --ogiltigt
15 X --X
15 4 --giltigt
15 5 --ogiltigt
44 4 --ogiltigt (både kategorin och värdet)
Jag vill söka igenom populationen och kontrollera om värdet jag får är giltigt i den kategorin. Är det så vill jag få ett resultat som ser ut såhär
Kategori 1 - 9 X Ogiltiga
10 1 0 1
15 1 1 1
Ogiltig 0 0 1 --44 hamnar här och alla andra som vars kategori inte stämmer med tabell1
Nån som kan hjälpa?
pulseMedlem sedan nov. 200373 inlägg 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?