Гость
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Очистка повторяющихся значений в выборке / 8 сообщений из 8, страница 1 из 1
30.11.2011, 21:46
    #37552995
Mairos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка повторяющихся значений в выборке
Приветствую всех!
Есть таблица вида
create table
(
id integer identity,
number varchar(20),
summa numeric(15,0),
number_2 varchar(20),
summa_2 numeric(15,0)
)

Каждому сочетанию "number - summa" может соответствовать несколько пар "number_2 - summa_2".
Т.е. пара "number - summa" в нескольких записях подряд будет повторяться, можно как-то зачистить повторяющиеся значения в первых двух полях, не прибегая к перебору таблицы в цикле или курсоре?
...
Рейтинг: 0 / 0
30.11.2011, 21:48
    #37552998
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка повторяющихся значений в выборке
distinct спасет
...
Рейтинг: 0 / 0
30.11.2011, 21:58
    #37553006
Mairos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка повторяющихся значений в выборке
White Owl, боюсь что не спасёт. Тут же не полностью строка по всем полям идентична, а только по полям 2 и 3.
Надо чтобы вот так было

1 qwerty 25 rtyui 22
2 fghjk 45
3 asdfgh 47 lhkbn 89
4 mvnb 35
5 zxcvbn 33 jhfkh 11

чтобы в строке 2 не отобразилось "qwerty 25", а в строке 4 "asdfgh 47"
...
Рейтинг: 0 / 0
30.11.2011, 21:59
    #37553009
Mairos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка повторяющихся значений в выборке
2 и 4 строки съехали влево
...
Рейтинг: 0 / 0
01.12.2011, 01:47
    #37553177
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка повторяющихся значений в выборке
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT 
  id,
  CASE WHEN f.id IS NULL THEN t.number ELSE t.number_2 END AS number,
  CASE WHEN f.id IS NULL THEN t.summa ELSE t.summa_2 END AS summa,
  CASE WHEN f.id IS NULL THEN t.number_2 ELSE NULL END AS number_2,
  CASE WHEN f.id IS NULL THEN t.summa_2 ELSE NULL END AS summa_2
FROM table t
  LEFT JOIN (
    SELECT number, summa, Min(id) AS id
    FROM table
    GROUP BY number, summa
  ) AS f ON f.number = t.number AND f.summa = t.summa AND t.id > f.id
...
Рейтинг: 0 / 0
01.12.2011, 02:13
    #37553185
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка повторяющихся значений в выборке
MairosWhite Owl, боюсь что не спасёт.
Надо чтобы вот так было 10533930 Вопросы номер 2 и 4.
...
Рейтинг: 0 / 0
01.12.2011, 10:48
    #37553480
Mairos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка повторяющихся значений в выборке
ASCRUS, спасибо большое! Это немного не то, но сам скрипт ваш подсказал правильный путь. ))
...
Рейтинг: 0 / 0
01.12.2011, 10:49
    #37553485
Mairos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка повторяющихся значений в выборке
Вот, собственно..
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
---------------------------
SABASE ASE  12 . 5 
--------------------------
create table #itog
(
	id		int  identity,
	Brief_1     char( 35 ), 
	SumPay		numeric( 15 , 0 ), 
	Brief_2     char( 35 ), 
	sum_1       numeric( 15 , 0 ), 
	sum_2		numeric( 15 , 0 ),
	RepDate		smalldatetime
)

insert into #itog
(
	Brief_1, 
	SumPay, 
	Brief_2, 
	sum_1, 
	sum_2,
	RepDate	
)
values
(
    'qwerty',
     123 ,
    'asdfg',
     110 ,
     120 ,
    '20110701'
    
)
------------------
insert into #itog
(
	Brief_1, 
	SumPay, 
	Brief_2, 
	sum_1, 
	sum_2,
	RepDate	
)
values
(
    'qwerty',
     123 ,
    'asdfg2',
     111 ,
     121 ,
    '20110701'
    
)
----------------------------
select 
    case when f.Brief_2 is NULL then t.Brief_1 else Null end as Brief_1,
    case when f.Brief_2 is NULL then t.SumPay else Null end as SumPay,
    t.Brief_2, 
    t.Sum_1,
    t.Sum_2,
    t.RepDate    
    from #itog t
 left join #itog f
 ON f.Brief_1 = t.Brief_1 AND f.SumPay = t.SumPay AND t.id > f.id
Модератор: не забывай про кнопку SRC
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Очистка повторяющихся значений в выборке / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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