在每个 id 中按 postgres 分组

group by postgres in every id like

谁能帮我解决我的问题,我有 2 table

查询table一个:

  SELECT (REPLACE(A .coano, '0', '')) coano_for_like FROM glfcoa_dump A WHERE posum = 'K' ORDER BY A .coano ASC;

table 一个结果:

coano_for_like 
----------------
1
11
12
13
131
132
2
21
211
212
22
221
2211
292
2921
2922
2923
2924
293

查询 table 两个:

SELECT
    coano,
    SUM (CAST(endbal AS NUMERIC)) endbal
FROM
    vw_fx_glfmas
WHERE
    OFCID = '450'
AND TGL = '2017-08-11' and coano like '11%'
GROUP BY 
    coano
ORDER BY
    SUBSTRING (coano ,- 2, 7) ASC

table 两个的结果:

coano   endbal
--------------
111000  0
112000  234342846
114000  0

in table two coano like '11%' 11 是 table one

的结果

我的问题,如何从结果 table 中 按 table 两个 中的所有 coano 分组?

我想要这样的结果:

coano_for_like  coano   endbal
----------------------------------
1               111000  0
                112000  234342846
                114000  0
                152101  813307251
                152102  49259791
                162110  -3456957
                163010  0
                169100  -36826000
                169200  -32649000
11              111000  0
                112000  234342846
                114000  0
12              ...     ...

我认为您需要在第二个查询中更改 GROUP BY 和 SELECT 以按您在查询 1 中使用的 REPLACE 函数进行分组:

SELECT
a.coano_for_like,
b.coano,
SUM (CAST(b.endbal AS NUMERIC)) AS endbal
FROM 
  (SELECT REPLACE(coano, '0', '') AS coano_for_like
  FROM  glfcoa_dump) AS a
INNER JOIN vw_fx_glfmas b ON a.coano_for_like = b.coano
WHERE b.ofcid = '450'
AND b.tgl = '2017-08-11'
AND b.posum = 'K'
GROUP BY a.coano_for_like,
b.coano
ORDER BY A.coano ASC;

这是否为您提供了所需的结果?

您可以在联接中使用 like。

SELECT coano_for_like, coano, SUM (CAST(endbal AS NUMERIC)) endbal
  FROM vw_fx_glfmas 
  JOIN (SELECT (REPLACE(A .coano, '0', '')) coano_for_like FROM glfcoa_dump A WHERE posum = 'K') r
 WHERE OFCID = '450' AND TGL = '2017-08-11' and coano like coano_for_like || '%'
 GROUP BY coano
 ORDER BY coano ASC

稍微更正

SELECT
    r.coano_for_like,
    coano,
    SUM (CAST(endbal AS NUMERIC)) endbal
FROM
    vw_fx_glfmas a,
    (
        SELECT
            (REPLACE(A .coano, '0', '')) coano_for_like
        FROM
            glfcoa_dump A
        WHERE
            posum = 'K'
    ) r
WHERE
    ofcid = '450'
AND TGL = '2017-08-11'
AND coano LIKE coano_for_like || '%'
GROUP BY
    coano_for_like,
    a.coano
ORDER BY
    coano_for_like ASC