使用带有聚合函数的case和select&按条款分组

时间:2012-04-26 02:12:19

标签: sql oracle

我的下表

ID    TYPE    
---   ----    
1     P    
1     W    
2     P    
3     W    
4     W    
4     X    
5     P    
6     null  

我需要像下面那样创建一个新表

ID   Count of Type      Code    
--  --------------     -------    
1        2             null    
2        1             P      
3        1             W    
4        2             null    
5        1             P    
6        0             null    


1st col ---> ID    
2nd col ---> count of "type" for an ID    
3rd col ---> if count(type) = 1 then TYPE      
             else null    

请帮我写一个ORACLE SQL查询

1 个答案:

答案 0 :(得分:3)

您可以使用带有max函数的子查询来获取代码的值,然后在case语句中使用它来仅在count = 1时获取最终查询中的值。

select id, cnt, case when cnt=1 then maxtype else null end as code
from 
(select id, count(*) as cnt, max(type) as maxtype
from t1
group by id) t2