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

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

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

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
22.01.2019, 22:04
    #39763129
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы новичка. Реализация общего ID для группы с общим значением
Liet-Kynes,

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

ну так нормализуйте, добавьте таблицу журнала загрузок, реорганизуйте процесс загрузки.
...
Рейтинг: 0 / 0
23.01.2019, 13:51
    #39763441
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы новичка. Реализация общего ID для группы с общим значением
Liet-Kynes, а зачем вообще вы храните поле, значение которого элементарно вычисляется из других данных? вот как раз тем самым DENSE_RANK(). Получайте его в запросе, когда понадобится...
...
Рейтинг: 0 / 0
23.01.2019, 14:03
    #39763456
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы новичка. Реализация общего ID для группы с общим значением
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
23.01.2019, 14:04
    #39763457
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопросы новичка. Реализация общего ID для группы с общим значением
Andy_OLAP,

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

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

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

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

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


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