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

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

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

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

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

16 ответов

49 просмотров

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

Руслан- Автор вопроса
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 где условие?

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта