Удаление строк с условием при запросе?

Jops
Дата: 08.02.2013 13:52:05
Здравствуйте уважаемые! Я вновь с проблемой в своих таблицах
Суть в следующем: Есть вьюшка v_r_g2 (во вложении). Уже нормально сформирована и отражается, как и требуется.
Есть запрос к ней:

SELECT distinct
cam_gr_id, user_id, cam_group_name, is_admin, rule_cam_status_user, rule_cam_status_group,

(CASE 
WHEN (ISNULL(rule_status) AND ISNULL(rule_status_group) AND ISNULL(rule_cam_status_user) 
AND ISNULL(rule_cam_status_group) AND (is_admin = 0)) THEN 3
// Если все вышеперечисленные права NULL и is_admin = 0, то значение из столбца result заменяется на тройку

WHEN (ISNULL(rule_status) AND ISNULL(rule_status_group) AND (is_admin = 0 || 1)) 
THEN result
// Если все вышеперечисленные права NULL и is_admin = 0 или 1, то значение из столбца result остаются без изменений


WHEN (is_admin = 1) THEN result 
// result остаётся без изменений

ELSE 3 END) AS result

FROM v_r_g2


При запуске данного запроса выводятся данные, но не в той форме, в которой требуются для вывода. То есть впоследствии, требуются три основных значения cam_gr_id, user_id, result. Но так как cam_gr_id (это группа камер) содержит множество cam_id (камеры), то получается иногда две строки с одинаковыми cam_gr_id, user_id, но с разными result. cam_id нельзя убрать из таблицы (не будет нужного конечного результата)!
Можно ли оставить только одну строчку с cam_gr_id, user_id при условиях:
1. Если result = 3, то оставлять только эту строчку, Если же любому другому числу, то оставлять как есть (Если тройка не будет записана CASE`ом, то второй строчки не будет, соответственно только при ройке нужно будет применить ЭТО условие)

Если кто меня не понял, задавайте вопросы) Постараюсь разжевать более дотошно и понятно.
tanglir
Дата: 08.02.2013 13:55:28
Jops
Можно ли оставить только одну строчку с cam_gr_id, user_id при условиях
Отсортировать (и пронумеровать - см. фак по переменным) результат по cam_gr_id, user_id, (result = 3). Выбрать из получившегося только строки с rownum=1. Всё.
Jops
Дата: 08.02.2013 14:45:58
Под одной строчкой я имел ввиду только одну из двух строчек с (например cam_gr_id = 2 user_id = 6). А в то же время строчка (или строчки) с cam_gr_id = 3 user_id = 4 должны тоже присутствовать в выборке. То есть мне ЭТОТ запрос (который написан в теме) нужно подчистить от одинаковых строк с изложенным условием)