0

私は現在、フィールド apar_id でグループ化し、それぞれの小計を作成したいレポートを作成しています。私の限られた知識と多くのグーグルの回答に悩まされていることを考えると、私はあなたの親切な意見を求めています.

私のコードは次のとおりです。

SELECT d.apar_name,a.*,b.rel_value,c.dim_b
FROM acutrans a 
LEFT JOIN aglrelvalue b ON a.apar_id=b.att_value
LEFT JOIN acrtrees c ON b.rel_value=c.cat_1
LEFT JOIN acuheader d ON a.apar_id=d.apar_id
WHERE b.rel_attr_id='212'
AND b.attribute_id='A4'
AND a.client='CL'
AND a.client=b.client
AND a.client=c.client
AND c.att_agrid='60'
AND (b.rel_value='X24' OR c.dim_b='PCT')
ORDER BY a.apar_id

結果は apar_id | ..... | 金額..... x 100 x 300 x -100 Y 400 Y 100

そして欲しい

apar_id | ..... | amount.....
x                 100
x                 300
x                 -100
Total X           300
Y                 400
Y                 100
Total Y           500

前もって感謝します

4

1 に答える 1

1

with rollup多くのデータベースはfor 句をサポートしていgroup byます。もしそうなら、あなたはこれをgroup by声明にすることであなたが望むことをすることができます.

SELECT d.apar_name, sum(amount) as amount
FROM acutrans a 
LEFT JOIN aglrelvalue b ON a.apar_id=b.att_value
LEFT JOIN acrtrees c ON b.rel_value=c.cat_1
LEFT JOIN acuheader d ON a.apar_id=d.apar_id
WHERE b.rel_attr_id='212'
AND b.attribute_id='A4'
AND a.client='CL'
AND a.client=b.client
AND a.client=c.client
AND c.att_agrid='60'
AND (b.rel_value='X24' OR c.dim_b='PCT')
GROUP BY d.apar_name WITH ROLLUP;

これでこの問題が明確に解決されるわけではありませんが、この解決策を採用することはできます (データベースがサポートしている場合)。

于 2014-07-07T13:45:24.470 に答える