2016-12-08 33 views
1
with table1 as 
(
    select CTN_MAIN, SUBS_KEY, BAN_KEY, count(CTN_MAIN) as c 
    from 
    (
    select distinct CTN_MAIN, SUBS_KEY, BAN_KEY 
    from STG_SDB_LOAD SDB 
) 
)select * from table1; 

我试图获取这3列CTN_MAIN,SUBS_KEY,BAN_KEY和不同的CTN_MAIN出现的次数。如果我这样做只是计算一列中不同值的数量

select count(CTN_MAIN) 

我得到的计数的主要领域,但我需要其他列也是如此。我能做什么?

误差

ORA-00937. 00000 - "not a single-group group function" 
*Cause:  
*Action: 
Error at Line: 3 Column: 10 

回答

1

试试这个

with table1 as 
(
    select CTN_MAIN, SUBS_KEY, BAN_KEY, count(CTN_MAIN) as c 
    from 
    (
    select distinct CTN_MAIN, SUBS_KEY, BAN_KEY 
    from STG_SDB_LOAD SDB 
) group by CTN_MAIN, SUBS_KEY, BAN_KEY 
)select * from table1; 
0

使用分析功能

with table1 as 
(
    select CTN_MAIN, SUBS_KEY, BAN_KEY, COUNT(DISTINCT CTN_MAIN) OVER (PARTITION BY NULL) as c 
    from 
    (
    select distinct CTN_MAIN, SUBS_KEY, BAN_KEY 
    from STG_SDB_LOAD SDB 
) 
)select * from table1;