powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопросы новичка. Реализация общего ID для группы с общим значением
12 сообщений из 12, страница 1 из 1
Вопросы новичка. Реализация общего ID для группы с общим значением
    #39763107
Liet-Kynes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, Друзья.

Подскажите пожалуйста, каким запросом реализовать следующий вывод.

Первоначально имеем таблицу:

datetime number
01.01.2000 13:10 1
01.01.2000 13:10 1
01.01.2000 13:15 1
01.01.2000 13:15 1

В итоге нам нужно получить следующий вывод:


datetime number ID
01.01.2000 13:10 1 1
01.01.2000 13:10 2 1
01.01.2000 13:15 1 2
01.01.2000 13:15 4 2

После чего увеличивать ID с каждой новой записью группы данных. Учитывая что для всех записей, выгруженных в одно и тоже время, должен быть общий ID?
...
Рейтинг: 0 / 0
Вопросы новичка. Реализация общего ID для группы с общим значением
    #39763129
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Liet-Kynes,

DENSE_RANK ()
...
Рейтинг: 0 / 0
Вопросы новичка. Реализация общего ID для группы с общим значением
    #39763379
Liet-Kynes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению метод DENSE_RANK () так как речь идет о динамической таблице, в которую постоянно будут поступать новые данные и каждой выгрузке данных нам необходимо добавлять в поле id значение +1
...
Рейтинг: 0 / 0
Вопросы новичка. Реализация общего ID для группы с общим значением
    #39763393
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Liet-Kynes,

ну так нормализуйте, добавьте таблицу журнала загрузок, реорганизуйте процесс загрузки.
...
Рейтинг: 0 / 0
Вопросы новичка. Реализация общего ID для группы с общим значением
    #39763441
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Liet-Kynes, а зачем вообще вы храните поле, значение которого элементарно вычисляется из других данных? вот как раз тем самым DENSE_RANK(). Получайте его в запросе, когда понадобится...
...
Рейтинг: 0 / 0
Вопросы новичка. Реализация общего ID для группы с общим значением
    #39763456
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Liet-Kynes,

Делаете таблицу с primary key id автоинкрементным и уникальными значениями [datetime]. Вставляете в таблицу и пишете number = -1. Берете вставленный кусок, группируете group by [datetime], получаете новые значения - 4,5,6. Делаете update куска таблицы.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
// таки можно написать кошерный merge, но зачем

insert into new_table ([datetime])
select t1.[datetime] // only new datetime from table
from
(
select [datetime] from table
where [number] = -1 // default for insert
group by [datetime]
)
left join new_table t2 on t1.[datetime] = t2.[datetime]
where t2.[datetime] is null


update t1
set
   [number] = t2.[number] // autoincrement
from table t1
inner join new_table t2 on t1.[datetime] = t2.[datetime]
where t1.[number] = -1
...
Рейтинг: 0 / 0
Вопросы новичка. Реализация общего ID для группы с общим значением
    #39763457
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAP,

В одном месте пропустил t1, чтобы не было желания сделать бездумно копи-паст.
...
Рейтинг: 0 / 0
Вопросы новичка. Реализация общего ID для группы с общим значением
    #39763965
Liet-Kynes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А нельзя ли при вызрузке данных из таблицы t1, взять max(id) из таблицы т2 и к ней прибавить единицу перед записью данных в таблицу t2?
...
Рейтинг: 0 / 0
Вопросы новичка. Реализация общего ID для группы с общим значением
    #39764062
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Liet-Kynes,

а если два процесса будут добавлять?
...
Рейтинг: 0 / 0
Вопросы новичка. Реализация общего ID для группы с общим значением
    #39764124
Liet-Kynes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов

В этом случае можно блокировать таблицу, если с ней выполняются какие-либо операции?
...
Рейтинг: 0 / 0
Вопросы новичка. Реализация общего ID для группы с общим значением
    #39764165
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAPAndy_OLAP,

В одном месте пропустил t1, чтобы не было желания сделать бездумно копи-паст.
Какое коварство
...
Рейтинг: 0 / 0
Вопросы новичка. Реализация общего ID для группы с общим значением
    #39764187
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexAndy_OLAPAndy_OLAP,

В одном месте пропустил t1, чтобы не было желания сделать бездумно копи-паст.
Какое коварство
Ой-вей, Вы такой суровый термин употребляете. Но в целом соглашусь, меня даже коллеги по работе называют за глаза "канцлером Палпатином". Коварство - это метод обучения ленивых.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопросы новичка. Реализация общего ID для группы с общим значением
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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