How do I use Group By based on a Case statement in Oracle?

前端 未结 3 1056
情深已故
情深已故 2020-12-31 02:11

I have an SQL-query where I use Oracle CASE to compare if a date column is less than or greater than current date. But how do I use that

相关标签:
3条回答
  • 2020-12-31 02:19

    As an additional input, although it does not relate to this thread, you can also aggregate your case statements without mentioning it in the group by clause.

    SELECT
       WORK_ORDER_NUMBER,
       SUM(CASE WHEN STOCK_CODE LIKE 'xxxx' THEN STOCK_QUANTITY ELSE 0 END) AS TOTAL
    FROM Table
    GROUP BY WORK_ORDER_NUMBER;
    
    0 讨论(0)
  • 2020-12-31 02:24
    select
    (case
        when exp_date > sysdate then 1
        when exp_date <= sysdate then 2
        else 3
     end) expired, count(*)
    from mytable
    group by (case
        when exp_date > sysdate then 1
        when exp_date <= sysdate then 2
        else 3
     end)
    
    0 讨论(0)
  • 2020-12-31 02:35

    Use an inline view:

    SELECT expired,
           count(*)
      FROM (SELECT (CASE
                       WHEN exp_date > SYSDATE THEN 1
                       WHEN exp_date <= SYSDATE THEN 2
                       ELSE 3
                     END) AS expired
              FROM mytable)
    GROUP BY expired;
    

    Hope it helps...

    0 讨论(0)
提交回复
热议问题