«если, то, иначе» в SQLite

Можно ли в SQLite сделать следующее, не используя пользовательские функции. У меня есть две таблицы, которые связаны через общие идентификационные номера. Во второй таблице есть две переменные. Я бы хотел вернуть список результатов, состоящий из идентификатора строки и NULL, если все экземпляры этих двух переменных (а их может быть больше двух) равны NULL, 1, если все они равны 0 и 2, если один или несколько - 1.

Прямо сейчас у меня есть следующее:


SELECT 
    a.aid, 
    (SELECT count(*) from W3S19 b WHERE a.aid=b.aid) as num, 
    (SELECT count(*) FROM W3S19 c WHERE a.aid=c.aid AND H110 IS NULL AND H112 IS NULL) as num_null, 
    (SELECT count(*) FROM W3S19 d WHERE a.aid=d.aid AND (H110=1 or H112=1)) AS num_yes 
FROM W3 a

Для этого нужно пройти через каждый результат следующим образом (грубый псевдокод Python):


if row['num_yes'] > 0:
    out[aid] = 2
elif row['num_null'] == row['num']:
    out[aid] = 'NULL'
else:
    out[aid] = 1

Есть ли более простой способ ? Спасибо!

6
задан Evan Cortens 7 October 2010 в 12:03
поделиться