Постараюсь объяснить, но если это неясно, сообщите мне. Английский не мой первый язык.Построить запрос как условие для вставки набора записей
Мне нужна помощь с запросом, который служил бы условием вставить набор записей или нет.
Во-первых, у меня есть таблица db EmployeeProviders.
В одной из хранимых процедур я пересчитываю кредиты в соответствии с некоторыми условиями. Записи устанавливаются в количествах в этом случае три, но могут быть более или менее.
Если после пересчета я получаю точно такие же цифры или кредиты с той же датой вступления в силу, что и у EmployeeProviders, мне не нужно вставлять эти значения. EmployeeProviders может содержать несколько наборов записей для каждого сотрудника, отделенного действительной датой.
Сложность для меня заключается в построении запроса, который будет проверять записи не один за другим, а в наборах из трех в этом случае. Если одна из записей не соответствует, мне нужно вставить все три. Если все они одинаковые, я не вставляю никаких записей.
declare @StartDate datetime, @employee_id int
select @StartDate = '2013-07-01', @employee_id = 3465
Например здесь таблица БД заполняются значениями
DECLARE @EmployeeProviders TABLE (
ident_id int IDENTITY,
employee_id int,
id int,
plan_id int,
credits decimal(18,5),
effective_date datetime
)
INSERT INTO @EmployeeProviders (employee_id, plan_id, id, credits, effective_date)
VALUES (18753, 23, 0.00000, '2013-06-01')
INSERT INTO @EmployeeProviders (employee_id, plan_id, id, credits, effective_date)
VALUES (3465, 18753, 15, 0.00000, '2013-06-01')
INSERT INTO @EmployeeProviders (employee_id, plan_id, id, credits, effective_date)
VALUES (3465, 18753, 16, 60.00, '2013-06-01')
INSERT INTO @EmployeeProviders (employee_id, plan_id, id, credits, effective_date)
VALUES (3465, 18753, 23, 0.00000, '2013-07-01')
INSERT INTO @EmployeeProviders (employee_id, plan_id, id, credits, effective_date)
VALUES (3465, 18753, 15, 0.00000, '2013-07-01')
INSERT INTO @EmployeeProviders (employee_id, plan_id, id, credits, effective_date)
VALUES (3465, 18753, 16, 81.580, '2013-07-01')
SELECT * FROM @EmployeeProviders WHERE plan_id = 18753 and datediff(dd,effective_date,@StartDate) = 0
Вот таблица температуры в хранимой процедуре. Он обновляется в процессе
DECLARE @Providers TABLE (
id int,
plan_id int,
credits decimal(18,5)
)
INSERT INTO @Providers (plan_id, id, credits)
VALUES (18753, 23, 0.00000)
INSERT INTO @Providers (plan_id, id, credits)
VALUES (18753, 15, 0.00000)
INSERT INTO @Providers (plan_id, id, credits)
VALUES (18753, 16, 81.580)
SELECT * FROM @Providers
caclulation После всех обновлений сумм в этой темп таблицы такие же, как и в таблице БД EmployeeProviders так, мне не нужно, чтобы вставить новый набор записей Как я могу сделать один запрос, который может либо должно быть как ЕСЛИ НЕ СУЩЕСТВУЕТ() или просто сделать INSERT EmployeeProviders() ... SELECT ... FROM @Providers ,,, - запрос, который вернет мне набор из 3 записей, если значения не являются такие же, как у EmployeeProviders
Другой сценарий, @ Providers.credits = 65, так как сумма изменений d сравнить EmployeeProviders.credits для ид = 16. Я добавлю новый набор из 3 записей в таблице EmployeeProvider
DECLARE @Providers TABLE (
id int,
plan_id int,
credits decimal(18,5)
)
INSERT INTO @Providers (plan_id, id, credits)
VALUES (18753, 23, 0.00000)
INSERT INTO @Providers (plan_id, id, credits)
VALUES (18753, 15, 0.00000)
INSERT INTO @Providers (plan_id, id, credits)
VALUES (18753, 16, 65.00)
SELECT * FROM @Providers
Спасибо заранее,
Mak
ваш вопрос по-прежнему неясен. не могли бы вы объяснить это больше? –
Если результат из обеих таблиц одинаковый, идентификаторы и суммы для них одинаковы, мне не нужно вставлять новые записи в EmployeeProviders. Например, EmployeeProviders.id = Providers.id и EmployeeProviders.credits = Providers.credits для EmployeeProviders.effective_date = 1 июля 2013 года. Все три записи должны быть одинаковыми. Если Providers.credits после пересчета для одной из записей будет 65, тогда я добавлю новый набор из 3 записей. – user2551472
. Уникальный идентификатор для каждой строки из 3-х записей - «id» – user2551472