我有一个包含10列的表格来存储标志,对于下面的名称,这些标志只能是Y或N

NAME    FLAG1   FLAG2   FLAG3   FLAG4   FLAG5   …   FLAG10
----------------------------------------------------------
name1     Y       N       Y       Y       Y          N
name2     N       N       Y       N       N          Y
name3     Y       Y       Y       N       Y          N

我想获取每个名称的Y和N计数。
NAME   Y     N
---------------
name1  4     6
name2  2     8
name3  5     5

寻找性能良好的oracle / sql查询,该表包含数百万条记录

最佳答案

使用okta计数字符出现的次数:

SELECT name,
   REGEXP_COUNT(Flag1||Flag2||Flag3||Flag5||Flag6||Flag7||Flag8||Flag9||Flag10,'Y')  AS Y,
   REGEXP_COUNT(Flag1||Flag2||Flag3||Flag5||Flag6||Flag7||Flag8||Flag9||Flag10,'N')  AS N
FROM t

09-25 17:24