WHERE и CASE используются вместе - PullRequest
1 голос
/ 28 мая 2020

Я новичок, и мне трудно использовать инструкции CASE. Здесь я хочу использовать CASE, если условие (например, segment = '87' или '30') выполняется. Я пробовал следующее, но это не сработало.

Может мне где-то не хватает чего-то вроде запятой?

WITH status AS
(
  SELECT id,
  first_day AS 'month'
  WHERE segment = '87' CASE 
    WHEN subscription_start < first_day THEN 1
    ELSE 0
  END AS is_active_87
  WHERE segment = '30' CASE 
    WHEN subscription_start < first_day THEN 1
    ELSE 0
  END AS is_active_30
);

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 28 мая 2020

В SQLite логические выражения оцениваются как 0 для FALSE или 1 для TRUE, поэтому нет необходимости в выражении CASE:

WITH status AS
(
  SELECT id,
    first_day AS month,
    (segment = '87' AND subscription_start < first_day) AS is_active_87,
    (segment = '30' AND subscription_start < first_day) AS is_active_30
  FROM tablename
)
1 голос
/ 28 мая 2020

У вас недействительный SQL; вам необходимо включить условие, указанное в WHERE, в выражение CASE. Обратите внимание, что в вашем запросе также отсутствует предложение FROM:

WITH status AS
(
  SELECT id,
  first_day AS 'month',
  CASE WHEN segment = '87' AND subscription_start < first_day THEN 1
    ELSE 0
  END AS is_active_87,
  CASE WHEN segment = '30' AND subscription_start < first_day THEN 1
    ELSE 0
  END AS is_active_30
  FROM yourtable
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...