2012-11-11 74 views
0

如何在sql中對來自其他表的字段進行分組。這裏是我的代碼SQL Group按字段從其他表

select 
    sum(a.trans_amount), (
    select 
     ledger_name 
    from 
     ledger_master 
    where 
     ledger_master.ledger_code = transaction_ledger.ledger_code 
) as ledger_name, 
    ledger_code 
from 
    transaction_ledger 
where 
    ledger_parent = 'Sundry Debtors' 
group by 
    ledger_code, 
    ledger_name 

回答

1

爲什麼不加入的結果,然後通過分組?

SELECT 
SUM(Trans_Amount), 
A.Ledger_Name, 
A.Ledger_Code 
FROM Transaction_Ledger A INNER JOIN Ledger_Master B 
ON A.Ledger_Code=B.Ledger_Code 
WHERE A.Ledger_Parent='Sundry Debtors' 
GROUP BY A.Ledger_Code, A.Ledger_Name 

您的Ledger_Master和Transaction_Ledger有一個相關列「Ledger_Code」,您已在您提供的示例查詢中使用該列。

記住這一點,您可以在兩個表的這兩個字段上的聯接後繼續按所需字段進行分組。

幸運的是,您想要的選擇列表(名稱&代碼)也可以用於組合 - 因此不會違反分組規則。

1

假設有每個交易底賬只有一個分類帳主記錄,這可能是你所追求的:

select 
    sum(t.trans_amount), 
    m.ledger_name, 
    t.ledger_code 
from 
    transaction_ledger t 
    inner join 
    ledger_master m 
    on t.ledger_code = m.ledger_code 
where 
    t.ledger_parent = 'Sundry Debtors' 
group by 
    t.ledger_code, 
    m.ledger_name