0

他のテーブルのフィールドで 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
4

2 に答える 2

1

トランザクション元帳ごとに元帳マスター レコードが 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
于 2012-11-11T16:31:24.990 に答える
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」があります。

そのことを念頭に置いて、2 つのテーブルのこれら 2 つのフィールドを結合した後、必要なフィールドでグループ化することができます。

幸いなことに、必要な選択リスト (名前とコード) を使用してグループ化することもできるため、グループ化規則に違反することはありません。

于 2012-11-11T16:33:06.420 に答える