在 oracle 的 toad 中使用特定列的 group by 子句而不是 all

问题描述 投票:0回答:1

我有以下查询,我只想对 3 列(subject_code、category_code、assrotment_code)进行分组,因为这些是多个条目。

我知道我需要提供所有具有 select 的列,但我需要 select 中的这些列,并且不需要 group by 否则输出将不正确。如何实现这一点还有其他方法吗?

我可以提供快照,为什么我需要这个?突出显示的内容在附件中重复,我想避免这种情况,只需要一条记录即可。

请推荐。

  select rts.MERCH_DIV_NUM, min(rts.DEPT_NUM) DEPT_NUM, bc.subject_code, bc.category_code,
         rts.ASSORTMENT_CODE, rts.CURR_PEND_QTY, 
         rts.CURR_PEND_AMT, a.assortment_desc
  from rts_subcat_dept_pending rts
  inner join bn_assortment a on rts.assortment_code = a.assortment_code
  inner join bn_category bc on substr(rts.assortment_code, 0, 4) = bc.category_code      
  group by bc.subject_code, bc.category_code, rts.ASSORTMENT_CODE
sql oracle toad
1个回答
0
投票

您似乎想要使用分析函数而不是聚合:

select rts.MERCH_DIV_NUM,
       min(rts.DEPT_NUM)
         OVER (PARTITION BY bc.subject_code, bc.category_code, rts.ASSORTMENT_CODE)
         AS DEPT_NUM,
       bc.subject_code,
       bc.category_code,
       rts.ASSORTMENT_CODE,
       rts.CURR_PEND_QTY, 
       rts.CURR_PEND_AMT,
       a.assortment_desc
from   rts_subcat_dept_pending rts
       inner join bn_assortment a
       on rts.assortment_code = a.assortment_code
       inner join bn_category bc
       on substr(rts.assortment_code, 0, 4) = bc.category_code
© www.soinside.com 2019 - 2024. All rights reserved.