Oracle - 根据select查询中的另一列为列分配计数值

时间:2017-02-21 13:03:12

标签: oracle select group-by

考虑一下,我在选择查询中有以下内容:

ID   Flag
5     Y
5     Y
5     N
6     Y
6     Y
6     Y
6     N

我应该在同一个选项中添加一个新列计数,它会计算的数字' Y' ID的记录并将其分配给所有人。 (例如:ID = 5有3条记录。所有这些记录都应被分配计数值为' 2')。

选择查询中所需的输出:

ID   Flag   count
5     Y      2
5     Y      2
5     N      2
6     Y      3
6     Y      3
6     Y      3
6     N      3

1 个答案:

答案 0 :(得分:3)

使用窗口功能:

select id, 
       flag, 
       count(case when flag = 'Y' then 1 end) over (partition by id) as "count"
from the_table
order by id;

对于case的标志,N表达式将返回null,因此count()函数将忽略它们