SQLite.Как вернуть 1 и 0 в разных столбцах, если встречаются конкретные значения - PullRequest
0 голосов
/ 28 октября 2011

Привет, я новичок в SQL и особенно в SQLite, который, как я только что узнал, отличается от SQL.

У меня есть таблица, которая выглядит следующим образом:

id_foo | foo_val
________________
  1    |    3
  1    |    1
  2    |    2

Мне нужен запрос, который дал бы мне таблицу со значениями 1 и 0, если произошло конкретное значение:

id_foo | val1 | val2 | val3 | val4 |
_______|______|______|______|______|
  1    |   1  |   0  |  1   |  0   |
  2    |   0  |   1  |  0   |  0   |

Я пытался сделать это с помощью команды «если существует», но «sqliteman» нене распознает эту команду: /

Ответы [ 2 ]

1 голос
/ 28 октября 2011

Это должно сработать:

SELECT id_foo
      ,max(CASE WHEN foo_val = 1 THEN 1 ELSE 0 END) AS val1
      ,max(CASE WHEN foo_val = 2 THEN 1 ELSE 0 END) AS val2
      ,max(CASE WHEN foo_val = 3 THEN 1 ELSE 0 END) AS val3
      ,max(CASE WHEN foo_val = 4 THEN 1 ELSE 0 END) AS val4
FROM   tbl
GROUP  BY id_foo
ORDER  BY id_foo
0 голосов
/ 28 октября 2011

SQLite использует 1 и 0 для логических значений , так что вы можете сделать это, если вам не нравится случай Эрвина:

select id_foo,
       max(foo_val = 1) as val1,
       max(foo_val = 2) as val2,
       max(foo_val = 3) as val3,
       max(foo_val = 4) as val4
from pancakes
group by id_foo
order by id_foo

Но имейте в виду, что использование CASE должно работать везде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...