我的下表
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查询
答案 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