Oracle 23ai allows specifying a Column Position (or Alias) in the GROUP BY clause.
For backward compatibility, the "group_by_position_enabled" parameter is a new feature that defaults to FALSE.
SQL> show parameter group_by_position_enabled NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ group_by_position_enabled boolean FALSE SQL> alter session set group_by_position_enabled=TRUE; Session altered. SQL> SQL> select p.prod_name, t.day_name, sum(s.amount_sold) 2 from sh.products p, sh.times t, sh.sales s 3 where p.prod_id=s.prod_id 4 and t.time_id=s.time_id 5 and t.calendar_month_name = 'January' 6 group by 1, 2 7 order by 1, 2 8 / PROD_NAME DAY_NAME SUM(S.AMOUNT_SOLD) -------------------------------------------------- --------- ------------------ 11" Youth Field Master Glove Friday 4635.73 11" Youth Field Master Glove Monday 2903.62 11" Youth Field Master Glove Saturday 3636.85 11" Youth Field Master Glove Sunday 6602.18 11" Youth Field Master Glove Thursday 5696.37 11" Youth Field Master Glove Tuesday 2843.81 11" Youth Field Master Glove Wednesday 6072.04 11.5" Youth Triple Stripe Series Glove Friday 6695.84 11.5" Youth Triple Stripe Series Glove Monday 5436.28 11.5" Youth Triple Stripe Series Glove Saturday 5653.8 11.5" Youth Triple Stripe Series Glove Sunday 10909.86 ... ... multiple rows returned ... ... PROD_NAME DAY_NAME SUM(S.AMOUNT_SOLD) -------------------------------------------------- --------- ------------------ Wicket Keeper Gloves Thursday 1550.94 Wicket Keeper Gloves Tuesday 3049.62 Wicket Keeper Gloves Wednesday 2583.16 Wide Brim Hat Friday 189.28 Wide Brim Hat Monday 1656.35 Wide Brim Hat Saturday 1689.48 Wide Brim Hat Sunday 560.7 Wide Brim Hat Thursday 1088.44 Wide Brim Hat Tuesday 2855.67 Wide Brim Hat Wednesday 250.19 461 rows selected. SQL>
This helps developers who already use the Column Position in the ORDER BY clause and can be consistent when writing the GROUP BY clause.
The HAVING clause also supports Column Aliases.
No comments:
Post a Comment