[英]SQL Server SUM, but aggregating by another column
I'm using the following SQL query to sum all payment types from my projects: 我正在使用以下SQL查询来汇总项目中的所有付款类型:
SELECT
SUM(E2_SALDO) as SUM,
E2_ITEMD as PROJECT,
E2_ZFORPG AS TYPE
FROM
SE2010
WHERE
D_E_L_E_T_ = ''
AND E2_NUM BETWEEN '' AND 'ZZZZZZZZZZZZZZZ'
AND E2_PREFIXO BETWEEN '' AND 'ZZZ'
AND E2_NATUREZ BETWEEN '' AND 'ZZZZZZZZZZZZZ'
AND E2_VENCREA BETWEEN '20140901' AND '20140915'
AND E2_PORTADO BETWEEN '' AND 'ZZZZZZZZZZZZZ'
AND E2_FORNECE BETWEEN '' AND 'ZZZZZZZZZZZZZ'
AND E2_EMISSAO BETWEEN '20000101' AND '20201231'
AND E2_ZFORPG BETWEEN '' AND 'ZZZZZZZZZZZZZ'
AND E2_ZTPED BETWEEN '' AND 'ZZZZZZZZZZZZZ'
AND E2_SALDO> 0 and E2_TIPO<>'PR' AND E2_ITEMD BETWEEN '' AND 'ZZZZZZZZZZZZZ'
GROUP BY
E2_ITEMD, E2_ZFORPG
My result looks like this 我的结果看起来像这样
SUM PROJECT TYPE
-----------------------------
848,15 F140319
7296,36 H1008 DOC
14534,02 H1008 TED
36041,33 K0104 BOL
11127,91 F140363 CAM
84841,43 H1008 CAM
500 CHQ
1600 K0309 CHQ
4124,91 DEB
200 F130702 DOC
3394,64 H1001 DOC
7674,54 H1001 TED
That's almost it, but I want to "combine" some results, for example I want all costs for projects starting with "H" to be together, like this: 差不多了,但是我想“合并”一些结果,例如,我希望以“ H”开头的项目的所有成本都在一起,例如:
SUM PROJECT TYPE
------------------------------
10691 H1001,H1008 DOC
22208,56 H1001,H1008 TED
84841,43 H1008 CAM
So, in this example, it grouped all DOC
payment types for everything on "H" projects (1st line), grouped all "TED" payment types (2nd line) and also show projects alone when there is no other project (3rd line, because there is no "H1001 CAM" anywhere) 因此,在此示例中,它将“ H”项目(第一行)中所有内容的所有
DOC
付款类型分组,对所有“ TED”付款类型(第二行)进行分组,并且在没有其他项目时单独显示项目(第三行,因为任何地方都没有“ H1001 CAM”)
If possible, I would like to manually inform somewhere the group types, because sometimes I want to have "H" and "K" projects together, so I would like to inform the "groups" in a ( ) , like in a "WHERE TYPE IN ("first","second") 如果可能的话,我想在某个地方手动通知组类型,因为有时我想同时拥有“ H”和“ K”项目,所以我想在()中通知“组”,就像在“ WHERE”中那样TYPE IN(“第一”,“第二”)
Thank you! 谢谢!
Edit: Running Microsoft SQL Server 2008 R2 编辑:运行Microsoft SQL Server 2008 R2
SELECT
SUM(E2_SALDO) AS sum,
E2_ITEMD =
STUFF((
SELECT
', ' + E2_ITEMD
FROM
SE2010 b
WHERE
b.E2_ITEMD = a.E2_ITEMD
AND b.E2_ITEMD LIKE '['+@yourProjectNameStartCharacters + ']%'-- H if only starting with H, HK if you want starting with h and k
FOR xml PATH ('')), 1, 2, ''),
E2_ZFORPG
FROM
SE2010
WHERE
D_E_L_E_T_ = ''
AND E2_NUM BETWEEN '' AND 'ZZZZZZZZZZZZZZZ'
AND E2_PREFIXO BETWEEN '' AND 'ZZZ'
AND E2_NATUREZ BETWEEN '' AND 'ZZZZZZZZZZZZZ'
AND E2_VENCREA BETWEEN '20140901' AND '20140915'
AND E2_PORTADO BETWEEN '' AND 'ZZZZZZZZZZZZZ'
AND E2_FORNECE BETWEEN '' AND 'ZZZZZZZZZZZZZ'
AND E2_EMISSAO BETWEEN '20000101' AND '20201231'
AND E2_ZFORPG BETWEEN '' AND 'ZZZZZZZZZZZZZ'
AND E2_ZTPED BETWEEN '' AND 'ZZZZZZZZZZZZZ'
AND E2_SALDO > 0
AND E2_TIPO <> 'PR'
AND E2_ITEMD BETWEEN '' AND 'ZZZZZZZZZZZZZ'
AND E2_ITEMD LIKE '['+@yourProjectNameStartCharacters + ']%'-- H if only starting with H, HK if you want starting with h and k
GROUP BY
E2_ZFORPG
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.