Oracle SQL: select 多个不同字段的计数

Oracle SQL: select count of multiple distinct fields

我需要 select idtype 和具有唯一 id-type 组合的行数。

所以我尝试了这样的事情:

SELECT ID,
       CASE
         WHEN /**/ THEN 'FIRST'
         WHEN /**/ THEN 'ANOTHER'
         ELSE 'ELSE'
         END AS TYPE,
       COUNT(DISTINCT ID, TYPE)

FROM   PRODUCTS

GROUP BY ID, TYPE;

此外,问题是在处理查询时计算的类型,所以当我尝试执行类似以下操作时:

SELECT ID,
       /*SOMETHING*/ END AS TYPE,
       COUNT(*)

FROM (SELECT DISTINCT ID,TYPE FROM PRODUCTS GROUP BY ID,TYPE);

我知道了:

 ORA-00904: "TYPE": invalid identifier

有什么建议吗?

你在找这个吗:

SELECT ID,
       (CASE WHEN /**/ THEN 'FIRST'
             WHEN /**/ THEN 'ANOTHER'
             ELSE 'ELSE'
        END) AS TYPE,
       COUNT(*)
FROM PRODUCTS
GROUP BY ID, 
         (CASE WHEN /**/ THEN 'FIRST'
               WHEN /**/ THEN 'ANOTHER'
               ELSE 'ELSE'
        END);

您可以使用子查询:

SELECT DISTINCT ID,
       (CASE WHEN /**/ THEN 'FIRST'
             WHEN /**/ THEN 'ANOTHER'
             ELSE 'ELSE'
        END) AS TYPE
FROM  PRODUCTS;

然后你可以将其转换为子查询::

SELECT ID, TYPE, COUNT(*)
FROM ( <QUERY HERE> ) T
GROUP BY ID, TYPE;