Sql 使用group by时出现无效列名错误
acctkey列上出现无效列错误。你能告诉我我做错了什么吗Sql 使用group by时出现无效列名错误,sql,sql-server,group-by,Sql,Sql Server,Group By,acctkey列上出现无效列错误。你能告诉我我做错了什么吗 select COUNT(acctkey) as Num, case when source_sys_cd in ('TRS','CLS') then source_sys_cd + '|'+[acct_num] when source_sys_cd = 'Hogan CIS' and [acct_type_cd] = 'DDA' then 'DDA' +
select COUNT(acctkey) as Num, case
when source_sys_cd in ('TRS','CLS') then source_sys_cd + '|'+[acct_num]
when source_sys_cd = 'Hogan CIS' and [acct_type_cd] = 'DDA' then 'DDA' + '|'+ [acct_id]
when source_sys_cd = 'Hogan CIS' and [acct_type_cd] != 'DDA' then 'TDA' +'|'+ [acct_id]
when source_sys_cd = 'CLN' then source_sys_cd + '|'+ [acct_num]+ [acct_id]
when source_sys_cd = 'RCC' then source_sys_cd + '|'+ [acct_id]
when source_sys_cd = 'ITF' then source_sys_cd + '|'+ [acct_id]+ [acct_num]
when source_sys_cd = 'SEC' then source_sys_cd + '|'+ [acct_id]
else source_sys_cd + '|'+ [acct_num]
end as acctkey
from mtb..STAGING_CUST_ACCT
group by source_sys_cd
,acct_id
,acct_num
,acctkey
,acct_type_cd
在您的情况下,您可以通过以下方式从组中删除
acctkey
,从技术上解决此问题:
group by source_sys_cd, acct_id, acct_num, acct_type_cd
所有这些列都包含在acctkey
的定义中(如果我没有遗漏任何内容的话)。但是,我怀疑这是您真正想要的,因为这可能会为acctkey
生成重复项
相反,我认为你想要:
with t as (
select t.*,
(case
when source_sys_cd in ('TRS','CLS') then source_sys_cd + '|'+[acct_num]
when source_sys_cd = 'Hogan CIS' and [acct_type_cd] = 'DDA' then 'DDA' + '|'+ [acct_id]
when source_sys_cd = 'Hogan CIS' and [acct_type_cd] != 'DDA' then 'TDA' +'|'+ [acct_id]
when source_sys_cd = 'CLN' then source_sys_cd + '|'+ [acct_num]+ [acct_id]
when source_sys_cd = 'RCC' then source_sys_cd + '|'+ [acct_id]
when source_sys_cd = 'ITF' then source_sys_cd + '|'+ [acct_id]+ [acct_num]
when source_sys_cd = 'SEC' then source_sys_cd + '|'+ [acct_id]
else source_sys_cd + '|'+ [acct_num]
end) as acctkey
from mtb..STAGING_CUST_ACCT t
)
select count(*), acctkey
from t
group by acctkey;
您不能在sql Server中的group by中使用别名可能重复