Схема (или, по крайней мере, как создается представление) может помочь, но вот предположение ...
Если вы ищете несколько строк в vwFundingDisbursement со значением «Alone» в имени типа распределения, то JOIN будет возвращать несколько строк, когда ваша исходная таблица (INSERTED) объединяется с несколькими строками в представлении. Однако если вы используете IN, SQL не волнует, вернет ли он несколько совпадений, он даст вам только одну строку.
Как пример:
CREATE TABLE dbo.Test_In_vs_Join1
(
my_id INT NOT NULL
)
CREATE TABLE dbo.Test_In_vs_Join2
(
my_id INT NOT NULL
)
INSERT INTO dbo.Test_In_vs_Join1 (my_id) VALUES (1)
INSERT INTO dbo.Test_In_vs_Join1 (my_id) VALUES (2)
INSERT INTO dbo.Test_In_vs_Join1 (my_id) VALUES (3)
INSERT INTO dbo.Test_In_vs_Join1 (my_id) VALUES (4)
INSERT INTO dbo.Test_In_vs_Join1 (my_id) VALUES (5)
INSERT INTO dbo.Test_In_vs_Join2 (my_id) VALUES (1)
INSERT INTO dbo.Test_In_vs_Join2 (my_id) VALUES (1)
INSERT INTO dbo.Test_In_vs_Join2 (my_id) VALUES (2)
INSERT INTO dbo.Test_In_vs_Join2 (my_id) VALUES (3)
INSERT INTO dbo.Test_In_vs_Join2 (my_id) VALUES (3)
SELECT
T1.my_id,
COUNT(*)
FROM
dbo.Test_In_vs_Join1 T1
INNER JOIN dbo.Test_In_vs_Join2 T2 ON
T2.my_id = T1.my_id
GROUP BY
T1.my_id
SELECT
T1.my_id,
COUNT(*)
FROM
dbo.Test_In_vs_Join1 T1
WHERE
T1.my_id IN (SELECT T2.my_id FROM dbo.Test_In_vs_Join2 T2)
GROUP BY
T1.my_id
В примечании, захоронение столбца внутри другого столбца, как это, является нарушением нормализованной формы и просто вызывает проблемы. Выполнение такого рода бизнес-логики в триггере также является опасным путем, как вы выясните.