Я относительно новичок в расширенных запросах базы данных и хранимых процедурах, и у меня возникла проблема с третьим оператором UPDATE
в следующей процедуре: в блоке кода IF
. Проблема в том, что мне нужно добавить номера участников в эти учетные записи, поэтому первая итерация UPDATE
добавляет lp.ID_1
к моей временной таблице, а вторая итерация добавляет lp.ID_2
во временную таблицу. Третьей итерации необходимо взять оставшиеся строки из оригинального оператора INSERT
(где ident
все еще должно быть NULL) и объединить столбец ident
с ID_1
и ID_2
, так как эти учетные записи имеют оба членства.SQL IF Условие в хранимой процедуре
Я пробовал несколько условий в блоке IF
, но, похоже, каждый раз придумывал решение.
USE [database_1]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[stored_procedure_1] @acct char(8)
AS
WITH X AS
(
select distinct st.ship2, t.name, null AS ident
from sales_table st
INNER JOIN accounts_table t ON st.ship2 = t.acct
where st.bill2 = @acct
)
SELECT x.ship2 AS s_acct
,x.name
,COALESCE(ident, lp.ID_1 +', '+ lp.ID_1 , lp.ID_2 , lp.ID_2 , '') AS Ident
FROM X
LEFT JOIN lp_table lp ON x.ship2 = lp.acct COLLATE Latin1_General_CS_AS
WHERE COALESCE(ident, lp.ID_2 +', '+ lp.ID_1 , lp.ID_1 , lp.ID_2 , '') <> ''
select * from X
where ident is not null
Вы пытались удалить инструкцию if, и просто вызывать вызов 'UPDATE'? У вас есть чек, если идентификатор равен null, поэтому он должен делать то, что вы ожидаете от него. –
"' взять оставшиеся строки ... и объединить столбец идентификатора с ID_1 и ID_2, так как эти учетные записи имеют оба члена. '" Нет! ** Не делай этого! ** Это некорректная схема. Если учетные записи могут иметь несколько членских составов, вам нужна отдельная таблица для сопоставления счетов для членства. ** НИКОГДА ** не вставлять данные csv в столбец! –
@JohnOdom, если я удалю условие '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' Другими словами, он работает так, как будто последнего 'UPDATE' не было. – soundwave