powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Повторяющееся данные?
12 сообщений из 12, страница 1 из 1
Повторяющееся данные?
    #32060065
Валентин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
У меня такой вопрос.
При группировки данных появляются повторные данные.
Example:

Номер Сумма Заказчик
Pr1 30 Слоник
Pr1 30 Кукла
Pr1 30 Баран
Pr1 30 Черепаха

Мне нужно, чтобы Номер и Сумма НЕ ПОВТОРЯЛИСЬ, т.е.
Номер Сумма Заказчик
Pr1 30 Слоник
Кукла
Баран
Черепаха

Помогите пожалуйста. Работаю на SQL Server version 8.0
...
Рейтинг: 0 / 0
Повторяющееся данные?
    #32060067
olegusan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не совсем понятен критерий, по которому нужно отображать номер и сумму "без повторений."

Т.е. какое значение должно быть у колонки Номер во втрой строке?
...
Рейтинг: 0 / 0
Повторяющееся данные?
    #32060119
Валентин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НИКАКОГО! т.е.
Номер Сумма Заказчик
Pr1 30 Слоник
--- -- Кукла
--- -- Баран
--- -- Черепаха
...
Рейтинг: 0 / 0
Повторяющееся данные?
    #32060128
olegusan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НИКАКОГО! это подразумевается NULL?

Еще вопрос:
А почему номер и сумма стоят напротив Слоник?
Данные как-нибудь сортированы?
...
Рейтинг: 0 / 0
Повторяющееся данные?
    #32060182
Валентин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НИКАКОГО ! - Да. это подразумевается NULL или просто " " (в смысле Nothing).

Еще вопрос:
А почему номер и сумма стоят напротив Слоник?
Данные как-нибудь сортированы?

---------------------------
Да, все данные отсортированы.
А на против слоник это значит, что первый номер договора и сумма прописывается, а следуюшие НЕ ДОЛЖНЫ УКАЗЫВАТЬСЯ до следующего договора. Например:

| Номер | Сумма | Заказчик |
| Pr1 | 30 | Слоник |
| --- | -- | Кукла |
| --- | -- | Баран |
| --- | -- | Черепаха |
| Pr2 | 60 | Слоник1 |
| --- | -- | Слоник2 |
| --- | -- | Слоник3 |
| --- | -- |Черепаха1|
...
Рейтинг: 0 / 0
Повторяющееся данные?
    #32060191
vap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
От повторов не избавитесь в группировке, это нормально.
Может вам после выборки по курсору пробежать и сделать замену?
...
Рейтинг: 0 / 0
Повторяющееся данные?
    #32060208
Валентин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробежать по курсору - ЭТО КАК?
Будьте добры, подскажите.
...
Рейтинг: 0 / 0
Повторяющееся данные?
    #32060212
Фотография AVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если готовите отчет, то подобные задачи обычно решаются уже на клиенте - проблема не в получении информации, а в способах вывода ее для пользователя
...
Рейтинг: 0 / 0
Повторяющееся данные?
    #32060214
vap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примерно так.
DECLARE cur CURSOR FOR SELECT Номер, Сумма, Заказчик
FROM Table WHERE XXX
OPEN cur
WHILE 1=1 BEGIN
FETCH NEXT FROM cur INTO . . .
IF @@FETCH_STATUS <> 0 BREAK
. . .
END
CLOSE cur
DEALLOCATE cur

но лучше всетаки это делать на клиенте. Проблему отображения должен решать клиент.
Задача сервера выдать данные в удобном виде.
...
Рейтинг: 0 / 0
Повторяющееся данные?
    #32060217
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если очень надо и порядок сортировки не важен, то вот так можно

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
set nocount on
create table #t(nomer varchar( 10 ), summa int, zakazchik nvarchar( 50 ))
insert #t values('Pr1',  30 , N'Слоник')
insert #t values('Pr1',  30  , N'Кукла') 
insert #t values('Pr1',  30  , N'Баран')
insert #t values('Pr1',  30  , N'Черепаха')

select nomer, summa, min(zakazchik) as zakazchik from #t group by nomer, summa
union all
select NULL AS nomer, NULL AS summa, a.zakazchik from #t a
inner join 
(select nomer, summa, min(zakazchik) as zakazchik from #t group by nomer, summa) AS b 
on b.nomer = a.nomer and b.summa = a.summa and b.zakazchik <> a.zakazchik

drop table #t
...
Рейтинг: 0 / 0
Повторяющееся данные?
    #32060219
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже наверное вот так вот

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
set nocount on
create table #t(nomer varchar( 10 ), summa int, zakazchik nvarchar( 50 ))
insert #t values('Pr1',  30 , N'Слоник')
insert #t values('Pr1',  30  , N'Кукла') 
insert #t values('Pr1',  30  , N'Баран')
insert #t values('Pr1',  30  , N'Черепаха')
insert #t values('Pr2',  60  , N'Слоник1')
insert #t values('Pr2',  60  , N'Слоник2') 
insert #t values('Pr2',  60  , N'Слоник3') 
insert #t values('Pr2',  60  , N'Черепаха1')
select nomer, summa, zakazchik 
from (
select nomer, summa, min(zakazchik) as zakazchik, NULL as nomer4order from #t group by nomer, summa
union all
select NULL AS nomer, NULL AS summa, a.zakazchik, a.nomer AS nomer4order from #t a
inner join (select nomer, summa, min(zakazchik) as zakazchik from #t group by nomer, summa) AS b on b.nomer = a.nomer and b.summa = a.summa and b.zakazchik <> a.zakazchik
) AS a
order by ISNULL(nomer, nomer4order) DESC

drop table #t
...
Рейтинг: 0 / 0
Повторяющееся данные?
    #32060247
Валентин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо БОЛЬШОЕ!
Сейчас буду пробовать.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Повторяющееся данные?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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