У меня есть инструкция case в хранимой процедуре, которая суммирует поле учетной записи, а затем вставляется в идентификатор пользователя.Логика работает ... до объединения с другой таблицей.
пытался добавить различные запросы и дополнительные таблицы к запросу, но все же, когда вы присоединяетесь к другой таблице, он применяет значение 1, когда я хочу, чтобы оно было 0на счет.
Это вычисление в сохраненном процессе;
INSERT INTO #SUMMARY_TEMP (USER_ID,FSN_CNT )
(SELECT USER_ID,
SUM(CASE WHEN A_GROUP_CD = 'RED' AND A_TYPE_CD = 'FSN' THEN REC_COUNT ELSE 0 END)
) AS 'FSN_CNT',
FROM (SELECT A_ACCOUNT_NBR,
A_USER_ID,
A_GROUP_CD,
A_TYPE_CD,
COUNT(*) AS REC_COUNT
FROM EXCEPTION_DETAIL
INNER JOIN #STAFF ON A_REPORT_DT = @REPORT_DT
AND (A_USER = B_USER_ID)
GROUP BY A_ACCOUNT_NBR,
A_USER_ID_ID,
A_GROUP_CD,
A_TYPE_CD) EXCEPTIONS
GROUP BY A_USER_ID,
A_ACCOUNT_NBR)
Это результат, который я ожидаю для 2 идентификаторов пользователя
A_ACCOUNT_NBR USER_ID FSN_CNT
123456 HENRY 0
123498 HENRY 1
374933 JOE 1
474930 JOE 0
но когда я присоединяюсь к другой таблице, данные выглядят как
A_ACCOUNT_NBR USER_ID FSN_CNT
123456 HENRY 1
123498 HENRY 1
374933 JOE 1
474930 JOE 1
, когда к счету 123456 и 474930 применяется значение 1, и оно должно быть 0. Я думаю, что это потому, что в другой таблице нет столбца ACCOUNT_NBR -я присоединяюсь к USER_ID, и поэтому он применяет 1 ко всем ACCOUNT_NBR из таблицы A.
Спасибо за все предложения, я попытался использовать cte, и счетчик теперь выглядит хорошо, но его созданные повторяющиеся строки, как показано ниже,Любые предложения о том, как удалить дублирование, ниже - это соединение, которое я использую для cte;
выберите cte. *, Jt.USER_ID из cte join EXCEPTION_DETAIL jt на cte.USER_ID = jt.USER_ID
USER ACCOUNT_NBR FSN_CNT ГЕНРИ 123456 0 ГЕНРИ 123456 0 ГЕНРИ 123498 1 ГЕНРИ 123498 1
ДЖО 374933 1 ДЖО 374933 1 ДЖО 474930 0 ДЖО 474930 0