169 похожих чатов

Добрый день, подскажите пожалуйста, можно ли использую функцию MERGE, в

разделе update обновлять все строчки?

В данный момент есть ключ, к примеру имя. Но имя расшивается в таблице на 3 строчки, так нужно.

Когда делаю MERGE, указываю ключ только имя и пытаюсь update, но выходит ошибка, не понимает какую строчку обновлять

16 ответов

12 просмотров

Ключ обычно соответствует одной "строчке"

Руслан- Автор вопроса
Roman Sergeev
Ключ обычно соответствует одной "строчке"

Но в моем примере, их несколько, могу более подробно рассказать какую задачу пытаюсь решить

Руслан
Но в моем примере, их несколько, могу более подроб...

Значит это не ключ Напишите ddl, образец данных и что пытаетесь получить

Руслан- Автор вопроса
Roman Sergeev
Значит это не ключ Напишите ddl, образец данных и ...

--создание таблиц CREATE TABLE [ruslanrarr].[dbo].[zp_testt] ( rec_date nvarchar(50), end_date nvarchar(50), name VARCHAR(255) NOT NULL, vid_nadbavki nvarchar(255) null, summa float ) INSERT INTO [ruslanrarr].[dbo].[zp_testt](rec_date,end_date,name,vid_nadbavki,summa) VALUES('01.01.2023','05.05.2023','руслан','оклад',000), ('01.01.2023','05.05.2023','руслан','проф мастерство',000), ('01.01.2023','05.05.2023','руслан','питание',000) CREATE TABLE [ruslanrarr].[dbo].[zp_fact]( rec_date nvarchar(50), end_date nvarchar(50), name VARCHAR(255) NOT NULL, vid_nadbavki nvarchar(255) null, summa float ) INSERT INTO [ruslanrarr].[dbo].[zp_fact](rec_date, end_date,name,vid_nadbavki,summa) VALUES('06.05.2023','12.12.2023','руслан','оклад',500), ('06.05.2023','12.12.2023','руслан','проф мастерство',400), ('06.05.2023','12.12.2023','руслан','питание',300) ---MERGE MERGE [ruslanrarr].[dbo].[zp_fact] t USING [Ruslanrarr].[dbo].[zp_testt] s ON s.name = t.name WHEN MATCHED THEN UPDATE SET t.name = 'ЗАКРЫТО' WHEN NOT MATCHED BY TARGET THEN INSERT (rec_date,end_date,name,vid_nadbavki,summa) VALUES (s.rec_date,s.end_date,s.name,s.vid_nadbavki,s.summa);

Руслан- Автор вопроса
Timus
И чего ты хочешь добиться?

Хочу, что бы все строчки в таблице факт , по ключу «имя» обновились, но выходит ошибка, так как ключ не уникальный

Для merge вы должны указать в "On" критерий, по которому однозначно бужет интерпритироваться только одна строка

Руслан- Автор вопроса
Руслан
А можно ли как то группу строк?

Если вы хотите использовать merge, то нельзя. Делайте delete insert

Руслан- Автор вопроса
Руслан- Автор вопроса
Aleksey Shamshur
Если вы хотите использовать merge, то нельзя. Дела...

Смысл в том, что есть таблица где данные о сотрудниках на каждый день, к примеру: ФИО, дата, пол, возраст, отдел, должность, и другие поля. И данные каждый день, они могут повторятся. Но данные на каждый день по сотруднику уникальны. Ключ конечно там составной из ФИО, табельного, и других гуидов. Есть таблица с зарплатой сотрудников. Где данные к примеру, ФИО, дата начала, дата окончания, вид надбавки, сумма надбавки. И здесь как правильно по одному человеку 4 строчки может быть, разные надбавки, и дата начала и дата окончания надбавки может тоже одинаково. Я хочу ID из таблицы зарплаты , добавить в таблицу сотрудников, которые на каждый день, что бы в дальнейшем связывать по ID, но когда добавлю, таблица первая разошьетсч на большое количество строк, из за того что в таблице зарплата много строк. Вот и подумал, что через merge буду грузить и добавлять новые столбцы дата начала и дата окончания для целой группы, и id проставлю для каждый группы и тогда повторов не будет

Руслан
Смысл в том, что есть таблица где данные о сотрудн...

Сделайте группировку, чтобы гарантировать уникальность по ключу в "on" merge tbl_target as t using ( select s.staff_id,max(s.attr_value) as attr_value from tbl_source s group by s.staff_id ) as s on s.staff_id=t.staff_id ...

Руслан- Автор вопроса
Руслан- Автор вопроса
Aleksey Shamshur
да

А группировать прямо в ON где условие?

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
96
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
Вопрос вроде правильно, но что надо сделать, чтоб текст был виден нормально ? ghci> TE.decodeUtf8 $ TE.encodeUtf8 "test - проба" "test - \1087\1088\1086\1073\1072"
Fedor
7
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Кто может подсказать? Я преобрпзовал изображение в бинарное(у меня установлен трекбар который при установленном значении меняет пиксели на белый если меньше и чёрный если боль...
Константин VS
5
Карта сайта