#0
by bizon2008
Кто силен в SQL? Команда MERGE интересует. В общем, как туда запихать условие, типа если поля записи устарели то их обновить(UPDATE), иначе ничего не делать.
#3
by bizon2008
Я эту простыну уже третий час читаю. Скажи проще, плиз. Типа есть в записи поля контрагент, товар и сумма. Как условие прикрути что если что поменялось то апгредит иначе не надо.
#4
by ЧеловекДуши
Что значит, что либо. Это все го лишь запрос. Все что по отбору попадет, то и поменяется. Или я так же, как и ты использую только поверхности этого "айсберга" :) Часть примера из ссылки в . Должно быть указано по крайней мере одно из трех предложений MATCHED, но они могут быть указаны в любом порядке. В одном предложении MATCHED переменная не может быть обновлена больше одного раза. SET NOCOUNT ON; MERGE Production.UnitMeasure AS target USING (SELECT @UnitMeasureCode, ) AS source (UnitMeasureCode, Name) ON (target.UnitMeasureCode = source.UnitMeasureCode) WHEN MATCHED THEN UPDATE SET Name = source.Name WHEN NOT MATCHED THEN
#6
by ЧеловекДуши
Тогда может выполнять команду "UPDATE" и не мучаться? А так то там все в команде MATCHED Пиши, так как тебе надо. Не думаю ,что если ты не укажешь "WHEN NOT MATCHED THEN", то MERGE от этот перестанет работать ;) Замечания Должно быть указано по крайней мере одно из трех предложений MATCHED, но они могут быть указаны в любом порядке. В одном предложении MATCHED переменная не может быть обновлена больше одного раза. На все операции удаления, вставки или обновления, указанные применительно к целевой таблице инструкции MERGE, распространяются все ограничения, определенные для этой таблицы, включая все каскадные ограничения ссылочной целостности. Если IGNORE_DUP_KEY имеет значение ON для всех уникальных индексов в целевой таблице, то в инструкции MERGE этот параметр не учитывается. Чтобы использовать инструкцию MERGE, необходима точка с запятой (;) как признак конца инструкции. Возникает ошибка 10713, если инструкция MERGE выполняется без признака конца конструкции. .............. WHEN MATCHED THEN <merge_matched> Указывается, что все строки target_table, которые соответствуют строкам, возвращенным <table_source> ON <merge_search_condition>, и удовлетворяют дополнительным условиям поиска, обновляются или удаляются в соответствии с предложением <merge_matched>. Инструкция MERGE может иметь не больше двух предложений WHEN MATCHED. Если указаны два предложения, первое предложение должно сопровождаться предложением AND <search_condition>. Для любой строки второе предложение WHEN MATCHED применяется только в тех случаях, если не применяется первое. Если имеются два предложения WHEN MATCHED, одно должно указывать действие UPDATE, а другое — действие DELETE. Если действие UPDATE указано в предложении <merge_matched> и более одной строки в <table_source>соответствует строке в target_table на основе <merge_search_condition>, то SQL Server возвращает ошибку. Инструкцию MERGE нельзя использовать для обновления одной строки более одного раза, а также использовать для обновления и удаления одной и той же строки. WHEN NOT MATCHED [ BY TARGET ] THEN <merge_not_matched> Указывает, что строка вставлена в таблицу target_table для каждой строки, возвращенной выражением <table_source> ON <merge_search_condition>, которая не соответствует строке в таблице target_table, но удовлетворяет дополнительному условию поиска (при наличии такового). Значения для вставки указываются с помощью предложения <merge_not_matched>. Инструкция MERGE может иметь только одно предложение WHEN NOT MATCHED. WHEN NOT MATCHED BY SOURCE THEN <merge_matched> Указывается, что все строки target_table, которые не соответствуют строкам, возвращенным <table_source> ON <merge_search_condition>, и удовлетворяют дополнительным условиям поиска, обновляются или удаляются в соответствии с предложением <merge_matched>. Инструкция MERGE может иметь не более двух предложений WHEN NOT MATCHED BY SOURCE. Если указаны два предложения, то первое предложение должно сопровождаться предложением AND <clause_search_condition>. Для любой выбранной строки второе предложение WHEN NOT MATCHED BY SOURCE применяется только в тех случаях, если не применяется первое. Если имеется два предложения WHEN NOT MATCHED BY SOURCE, то одно должно указывать действие UPDATE, а другое — действие DELETE. В условии <clause_search_condition> можно ссылаться только на столбцы целевой таблицы. Если строки не возвращаются таблицей <table_source>, к столбцам в исходной таблице не может быть предоставлен доступ. Если операция обновления или удаления, указанная в <merge_matched>, ссылается на столбцы исходной таблицы, то возвращается ошибка 207 (недопустимое имя столбца). Например, предложение WHEN NOT MATCHED BY SOURCE THEN UPDATE SET TargetTable.Col1 = SourceTable.Col1 может стать причиной ошибки инструкции из-за недоступности столбца Col1 в исходной таблице.
#7
by spock
"...если что поменялось то апгредит иначе не надо..." - достаточно только UPDATE, согласен с .
#8
by mistеr
Соединить исходную и целевую таблицы, отфильтровать нужным образом, и все это уже ставить в USING.
#9
by bizon2008
Не, там флаг надо еще поднять что типа эти записи изменились. Тупо все обновить не прокатит.
#15
by Serginio1
Таблица с которой сравнивают. USING <table_source> Указывается источник данных, который сопоставляется со строками данных в таблице target_table на основе условия <merge_search condition>. Результат этого совпадения обуславливает действия, которые выполняются предложениями WHEN инструкции MERGE. Аргумент <table_source> может быть удаленной таблицей или производной таблицей, которая обращается к удаленным таблицам. Аргументом <table_source> может быть производная таблица, использующая конструктор табличных значений Transact-SQL для построения таблицы путем указания нескольких строк. Дополнительные сведения о синтаксисе и аргументах этого предложения см. в разделе Предложение FROM (Transact-SQL).
#16
by Serginio1
У меня загрузка в регистры сведений из CSV Я сначала через OPENROWSET загружаю данные во временную таблицу |INTO #TempPrice |FROM OPENROWSET( BULK N'"+ФайлСПрайсом+"', Затем создаю индекс Сравниваю и записываю
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- СКД, группировка с пустыми данными
- БП 3.0 + RLS = Зависание при печати счета. Help
- 1С 8.3. Запрос из регистра сведений, итоги.
- изменение состояния документа в 1с документооборот
- C#: "Ошибка синтаксиса в инструкции INSERT INTO"
- Внешний отчет и СКД
- Как в MS Word нужный текст сделать жирным с подчеркиванием?
- Помогите. Не дает поменять даты выгрузки документо из УТ10.3 в БП3.0
- Управляемые формы. Как программно вывести несколько кнопок на форму
- СКД. Дополнительная группировка "полугодие", "9 месяцев"
- Комплексная автоматизация 1.1 (1.1.58.2) Установка цен номенклатуры
- Использовать эту настройку периода при открытии. ЗУП.8.3.
- Заменить макет СКД в отчете?
- Нужен ли ведуший вид расчета
- У меня вопрос: как сохранить регламентированный отчет в БП 3.0 в Excel ?
- Журнал регистрации в SQLLite. Как урезать?
- Странно работает отбор в СКД при объединении
- Оплата ночных часов сдельщикам
- Хочу переставить ключ (на сервер 1с) в другой сервер?
- Розница 2.1 Отчет Оценка валовой прибыли