Я бы хотел сделать что-то подобное, но, конечно, с рабочим синтаксисом:)
MIN(CASE WHEN col=2
THEN CASE WHEN answer IS NULL THEN 0 ELSE answer END END)
Я пытаюсь запретить представлению получать значения NULL и вместо этого использовать нули.Вот мой запрос SELECT, который создает представление:
SELECT result,question_id,
MIN(CASE WHEN col=1
THEN answer
END) AS col1,
MIN(CASE WHEN col=2
THEN answer
END) AS col2,
MIN(CASE WHEN col=3
THEN answer
END) AS col3
FROM answers
GROUP by result,question_id
В основном я получаю хороший результат, который выглядит следующим образом
result question_id col1 col2 col3
1 2 10 20 70
2 2 80 20 NULL
3 3 0 100 0
У меня нет проблем с производительностью, и исходная таблицарегулярно обновляется, поэтому я хотел бы остаться с видом, а не sp.Таблица, которую вы видите, рассеивает реляционную структуру опроса, в котором рассматриваются вероятности.К столбцам каждой строки нужно добавить до 100. Если кто-то действительно уверен, что что-то, например, col3, не произойдет, он может либо заполнить 0 для других полей формы, либо оставить поле пустым.Валидатор формы проверяет, только если все это добавляет до 100. Если поле оставить пустым, в реляционной таблице нет записи NO, поэтому в рассредоточенном представлении записывается NULL.
Мне бы очень хотелосьзаставить его написать "0", но я не знаю как!Спасибо за любые предложения заранее!