powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Фильтр запроса, где надо исключить строки с дубликатными значениями в одном столбце.
4 сообщений из 4, страница 1 из 1
Фильтр запроса, где надо исключить строки с дубликатными значениями в одном столбце.
    #38790099
SAN_01_08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB 2.5, запрос в среде IBExpert.

CTE, вьюха ли (пока не решено) возвращает результат с такими значениями (здесь представительный фрагмент):
Код: plaintext
1.
2.
3.
4.
5.
6.
ID_V  VAL
12    M
12    R
15    NULL
18    T
18    NULL
24    M1

В результирующем запросе не должно быть строк типа "18 NULL", потому как существует строка "18 T".
Но строка "15 NULL" не должна исключаться - у нее в столбце ID_V нет двойника.
Не подскажете условие, по которому можно исключить ненужные строки.
...
Рейтинг: 0 / 0
Фильтр запроса, где надо исключить строки с дубликатными значениями в одном столбце.
    #38790197
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MIN(VAL) или MAX(VAL)
GROUP BY ID_V

А фрагмент нифига не представительный.
Что, к примеру, должен вернуть запрос, если будет ещё одна строка 18 Z?
...
Рейтинг: 0 / 0
Фильтр запроса, где надо исключить строки с дубликатными значениями в одном столбце.
    #38790202
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SAN_01_08В результирующем запросе не должно быть строк типа "18 NULL", потому как существует строка "18 T".
Но строка "15 NULL" не должна исключаться - у нее в столбце ID_V нет двойника.Если под "двойником" понимать строку с not-null значением, то как-то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
recreate table t(id int primary key, x int, y int);
commit;
insert into t values(1, 1, null);
insert into t values(2, 1, null);
insert into t values(3, 2, 2221);
insert into t values(4, 2, 2222);
insert into t values(5, 2, null);
insert into t values(6, 3, 3333);
commit;

select t.*
from t
join (
  select x, iif(min(y) is null and max(y) is null, 1, 0) s from t group by x
) s on t.x=s.x
where s.s=1 or t.y is not null;
...
Рейтинг: 0 / 0
Фильтр запроса, где надо исключить строки с дубликатными значениями в одном столбце.
    #38790367
SAN_01_08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Таблоид . Получилось так как и надо (сложно для моего понимания, но разберусь). Спасибо.
WildSeryА фрагмент нифига не представительный.
Что, к примеру, должен вернуть запрос, если будет ещё одна строка 18 Z?
В этом случает представительный.
Если в строк с одинаковым значением будет больше 2, то среди их не будет такой, где VAL = NULL.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Фильтр запроса, где надо исключить строки с дубликатными значениями в одном столбце.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]