我在存储过程中有一个case语句,将一个account字段加起来,然后插入到一个用户ID中。逻辑起作用...直到连接到另一个表。
尝试向查询中添加不同的计数和其他表,但是当您加入另一个表时,当我希望该值对帐户为0时,它仍然应用1值。
这是存储过程中的计算;
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个用户ID的预期结果
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
将应为1的值应用于帐户123456和474930。 我认为是因为另一个表没有ACCOUNT_NBR列-我正在USER_ID上加入,因此它将1应用于表A的所有ACCOUNT_NBR。
感谢所有建议,我尝试使用cte,计数现在看起来不错,但是它创建了重复的行,如下所示。关于如何删除重复项的任何建议,以下是我用于cte的联接;
从cte中选择cte。*,jt.USER_ID加入cte.USER_ID = jt.USER_ID的EXCEPTION_DETAIL jt
USER ACCOUNT_NBR FSN_CNT 亨利123456 0 亨利123456 0 亨利123498 1 亨利123498 1
约374933 1 乔374933 1 乔474930 0 乔474930 0
答案 0 :(得分:0)
您可以使用cte分隔第一个查询,并与下一个级别一起加入
sourceSets {
main {
//if you truly want to override the defaults:
output.resourcesDir = file('out/bin')
// Compiled Java classes should use this directory
java.outputDir = file('out/bin')
}
}