powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Выборка по нескольким столбцам
10 сообщений из 10, страница 1 из 1
Выборка по нескольким столбцам
    #34484204
question_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как определить одинаковость записей по нескольким столбцам???
...
Рейтинг: 0 / 0
Выборка по нескольким столбцам
    #34484268
Фотография Alexey Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FIELD1 = FIELD2 AND FIELD2 = FIELD3
...
Рейтинг: 0 / 0
Выборка по нескольким столбцам
    #34485141
question_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey PopovFIELD1 = FIELD2 AND FIELD2 = FIELD3

Нееееееее ...... Есть таблица с несколькими столбцами(полями)....и нужно определить количество строк с одинаковыми значениями в некоторых полях.
...
Рейтинг: 0 / 0
Выборка по нескольким столбцам
    #34485154
nkulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT rownumber()
OVER(PARTITION BY dup ORDER BY vote) AS rn
FROM T),
*
WHERE rn > 1;
...
Рейтинг: 0 / 0
Выборка по нескольким столбцам
    #34485234
Фотография Alexey Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так бы сразу...
Может, так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
WITH Q0(F1, F2)
AS (
VALUES( 1 ,  2 ), ( 1 ,  3 ), ( 2 ,  3 ), ( 1 ,  2 ), ( 1 ,  2 ), ( 2 ,  3 )),

Q1(ROW_ID, F1, F2)
AS (
SELECT ROWNUMBER() OVER(PARTITION BY F1, F2 ORDER BY F1, F2) AS M1, F1, F2
FROM Q0)

SELECT F1, F2, MAX(ROW_ID) AS SET_COUNT
FROM Q1
GROUP BY F1, F2
HAVING MAX(ROW_ID) >  1 
...
Рейтинг: 0 / 0
Выборка по нескольким столбцам
    #34485990
RomanSavelyev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
question_ Alexey PopovFIELD1 = FIELD2 AND FIELD2 = FIELD3

Нееееееее ...... Есть таблица с несколькими столбцами(полями)....и нужно определить количество строк с одинаковыми значениями в некоторых полях.
Код: plaintext
1.
2.
3.
4.
select count( 1 ) as quant from tablename tba 
where exists (select  1  from tablename tbb 
   where tba.f1=tbb.f1 and tba.f2=tbb.f2
   and    tba.primarykey<>tbb.primarykey)
...
Рейтинг: 0 / 0
Выборка по нескольким столбцам
    #34488419
nkulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати Роман мой и Марка пример будет работать и без первичного ключа.
...
Рейтинг: 0 / 0
Выборка по нескольким столбцам
    #34488789
RomanSavelyev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nkulikovКстати Роман мой и Марка пример будет работать и без первичного ключа.
Будет, но:
а) в нормальных случаях первичный ключ есть
б) без необходимости не стОит применять несовместимые с другими СУБД расширения, типа OLAP-функций.

В конце концов, можно написать в форме:
Код: plaintext
1.
2.
3.
4.
select count( 1 ) as quant from tablename tba 
where exists (select  1  from tablename tbb 
   where tba.f1=tbb.f1 and tba.f2=tbb.f2
   and    rrn(tba)<>rrn(tbb))
Но работать эо будет только на DB2/400
...
Рейтинг: 0 / 0
Выборка по нескольким столбцам
    #34488891
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nkulikovКстати Роман мой и Марка пример будет работать и без первичного ключа.Я тут еще не предлагал своего варианта.
Без olap функций, предполагая, что дубли ищем в полях f1, ..., fn, все записи с дублями можно отобрать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select t.*
from tablename t
join
(
select f1, ..., fn
from tablename
group by f1, ..., fn
having count( 1 )> 1 
) g on t.f1=g.f1 and ... and t.fn=g.fn
Если предполагается, что какое-либо из полей fm может быть null, то равенство
t.fm=g.fm
заменяется на
(t.fm=g.fm or coalesce(t.fm, g.fm) is null)
...
Рейтинг: 0 / 0
Выборка по нескольким столбцам
    #34491629
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select 
  sum(case
           when FIELD1 = FIELD2 then  1 
           else  0 
        end) as f1,
  sum(case
           when FIELD2 = FIELD3 then  1 
           else  0 
        end) as f2,
  sum(case
           when FIELD1 = FIELD2 and FIELD2 = FIELD3 then  1 
           else  0 
        end) as f3,
   ...
from T
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Выборка по нескольким столбцам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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