2014-05-01 40 views
0

我在acctkey列上收到無效列錯誤。你能告訴我我做錯了什麼嗎?使用組時出現無效列名錯誤

 group by source_sys_cd, acct_id, acct_num, acct_type_cd 

所有這些列都包含在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' + '|'+ [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 
+3

你不能在SQL Server組中使用別名通過 – paqogomez

+0

的可能重複[SQL - 在小組通過使用別名】(http://stackoverflow.com /問題/ 3841295/SQL-使用別名在基團的通過) –

回答

1

在你的情況,你可以在技術上只是通過從該組刪除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; 
相關問題