簡體   English   中英

SQL Server SUM,但按另一列進行聚合

[英]SQL Server SUM, but aggregating by another column

我正在使用以下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

我的結果看起來像這樣

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     

差不多了,但是我想“合並”一些結果,例如,我希望以“ H”開頭的項目的所有成本都在一起,例如:

SUM         PROJECT      TYPE
------------------------------
10691       H1001,H1008   DOC       
22208,56    H1001,H1008   TED       
84841,43    H1008         CAM       

因此,在此示例中,它將“ H”項目(第一行)中所有內容的所有DOC付款類型分組,對所有“ TED”付款類型(第二行)進行分組,並且在沒有其他項目時單獨顯示項目(第三行,因為任何地方都沒有“ H1001 CAM”)

如果可能的話,我想在某個地方手動通知組類型,因為有時我想同時擁有“ H”和“ K”項目,所以我想在()中通知“組”,就像在“ WHERE”中那樣TYPE IN(“第一”,“第二”)

謝謝!

編輯:運行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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM