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支持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 回答