SQL CASE или нет?
Я пытаюсь создать базу данных, которая содержит информацию о клиенте, информацию о встречах, заметках и т. д., поскольку мы являемся консультационной службой, если вы пропустите (днк) 3 сеанса, вы технически отстранены от нашего сервиса, и я хочу, чтобы автоматизировать этот процесс - помогите, я новичок-самоучка, я пытаюсь сделать это, используя "SELECT CASE", но понятия не имею, здесь
id | nhi | service | type | length | contactdate | notes
1 |PEB8132 | aod | t32 | 20 | 2012-11-20 | notes go here
Это моя таблица, когда они не посещают, длина становится днк, и именно это я хочу использовать, чтобы пометить после 3 неудачных попыток.
2 ответа
Этот работает в Oracle.
select nhi ,sum(case when length='dna' then 1 else 0 end) dna_count
from table
group by nhi
having sum(case when length='dna' then 1 else 0 end)>3;
Вы хотите сгруппировать всех людей, у которых есть [длина] = 'днк', показывая количество их днк.
Вы также хотите ограничить его 'dna' > 3, но вы не можете использовать агрегаты в WHERE
оговорка, поэтому мы используем HAVING
,
Вы можете добавить больше столбцов к вашему SELECT
заявление, но вам также нужно будет добавить их в GROUP BY
,
SELECT nhi, count([length]) AS dna
FROM yourTable
WHERE [length] = 'dna'
GROUP BY nhi
HAVING count([length]) > 3
Если вы хотите вернуть все записи, а не только те, где [length] = 'dna', вы можете использовать CASE.
SELECT nhi, SUM(CASE WHEN [length]='dna' THEN 1 ELSE 0 END) AS dna
FROM yourTable
GROUP BY nhi
Это предполагает nhi
это идентификатор пользователя, который как вы идентифицируете человека.