首页 > 解决方案 > Oracle 在子查询中按列分组

问题描述

我正在使用 oracle 中的查询,查询正在正确返回值。这是查询。

select max(ids) as IDTRX, monto, saldo, DE31, thekey, tipotrx
    from (select t.*,
         t.SID as ids,
         (TO_NUMBER(SUBSTR(P.P1204, 5, 12))) as monto,
         ((TO_NUMBER(SUBSTR(P.P1204, 5, 12)) * (TO_NUMBER(SUBSTR(t.EXTRA_INFO, 13,2)) - TO_NUMBER(SUBSTR(P.P1204, 3,2))))) as saldo,
         (TO_CHAR(t.DATE_TRX, 'YYMMDD') || t.AUTH_CODE || t.TRANSAC_AMOUNT || t.CARD_NUMBER) as thekey,
         t.EXTRA_INFO AS DE31,
         TO_NUMBER(SUBSTR(t.EXTRA_INFO, 12, 1)) as tipotrx
         from TBL_TRX t LEFT JOIN TBL_PRS P ON (t.SID = P.TRANSACT) 
         )t
         group by thekey, monto, saldo, DE31, tipotrx
         order by max(ids) desc;   

它正在工作并显示所有数据

在此处输入图像描述

我如何对共享相同“tipotrx”的结果进行分组,在图像中是 6,我如何计算所有有 6 的行并将它们分组?

我尝试按tipotrx 分组,但它显示了所有内容。

标签: sqloracle

解决方案


您可以使用 CTE 或子查询:

with q as (
      <your query here>
     )
select tiprotx, count(*)
from t
group by tiprotx;

推荐阅读