SQL Group By另一个表中的字段

时间:2012-11-11 16:26:06

标签: mysql sql

如何在sql中对来自其他表的字段进行分组。这是我的代码

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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”已在您提供的示例查询中使用。

记住这一点,您可以在连接这两个表的两个字段后继续按必填字段进行分组。

幸运的是,您想要的选择列表(名称和代码)也可用于分组 - 因此不违反分组规则。