SQL: Is it possible to 'group by' according to 'like' function's results? SQL: Is it possible to 'group by' according to 'like' function's results? sql sql

SQL: Is it possible to 'group by' according to 'like' function's results?


Sure:

WITH Fruits AS (    SELECT         CASE            WHEN m.str LIKE '%APPLE%' THEN 'Apple'           WHEN m.str LIKE '%ORANGE%' THEN 'Orange'         END AS FruitType               FROM MESA m    WHERE m.str LIKE '%FRUIT%')SELECT FruitType, COUNT(*) FROM FruitsWHERE FruitType IN ('Apple', 'Orange')GROUP BY FruitType;


Another variant of David Markle answer:

SELECT   fruit_name,  count(1)  as fruit_countFROM (  SELECT     CASE       WHEN m.str LIKE '%APPLE%' THEN 'Apple'      WHEN m.str LIKE '%ORANGE%' THEN 'Orange'     END                                         as fruit_name  FROM     MESA m  WHERE     m.str LIKE '%FRUIT%'    AND     (m.str LIKE '%APPLE%' OR m.str LIKE '%ORANGE%'))GROUP BY   fruit_name  

Same thing, but only 1 CASE required, which simplifies support ...


SELECT count(*) AS 'Apples'FROM MESA mWHERE m.str LIKE '%FRUIT%'AND m.str LIKE '%APPLE%'SELECT count(*) AS 'Oranges'FROM MESA mWHERE m.str LIKE '%FRUIT%'AND m.str LIKE '%ORANGE%'

Would that work?