I need to select id, type and count of rows with unique id-type combinations.
So I tried something like this:
SELECT ID,
CASE
WHEN /**/ THEN 'FIRST'
WHEN /**/ THEN 'ANOTHER'
ELSE 'ELSE'
END AS TYPE,
COUNT(DISTINCT ID, TYPE)
FROM PRODUCTS
GROUP BY ID, TYPE;
Also the problem is type calculated while processing the query, so when I tried to do something like:
SELECT ID,
/*SOMETHING*/ END AS TYPE,
COUNT(*)
FROM (SELECT DISTINCT ID,TYPE FROM PRODUCTS GROUP BY ID,TYPE);
I got this:
ORA-00904: "TYPE": invalid identifier
Any suggestions?
Advertisement
Answer
You can use a subquery :
SELECT DISTINCT ID,
(CASE WHEN /**/ THEN 'FIRST'
WHEN /**/ THEN 'ANOTHER'
ELSE 'ELSE'
END) AS TYPE
FROM PRODUCTS;
Then you can transform it as subquery ::
SELECT ID, TYPE, COUNT(*) FROM ( <QUERY HERE> ) T GROUP BY ID, TYPE;