2017-01-30 13 views
0

2つのテーブルがあり、複数の経費の合計が加算されます 従業員IDごとに、複数のテーブルを結合するときに1つのクエリで合計と合計を集計する

Emp_ID EmpName EmpSrname 

1001 John  Wilkes 
1002 Sandra Minotaur 
1003 Dante Inferno 

費用表:

食品expensのための各EMP_IDの合計をお探し
Emp_ID Expense_Name Ammount 

1001 Lunch   25 
1002 Drinks  55 
1003 Hotel   120 
1001 Dinner  80 
1001 Breakfast  20 
1002 LineDancing 15 
1002 Dinner  80 

EMPLOYEE表を達成(昼食、朝食、夕食)の合計を有することにより、ESここ

期待される結果がどのように見えるかです:、

Emp_ID EmpName EmpSrname TotalFood 
1001 John  Wilkes  125 
1002 Sandra Minotaur 80 
+0

どのように1001は125ですか? – GurV

+0

あなたは単純にグループに参加します – TheGameiswar

+0

「1001」にはどのように「125」がありますか?あなたのデータでは、それは '45'でなければなりません... – Siyual

答えて

1

JOINこのようなフィルタと集計:

select 
    e.emp_id, e.empName, e.EmpSrName, sum(x.amount) totalfood 
from employee e 
inner join expenses x 
on e.emp_id = x.emp_id 
where x.expense_name in ('Lunch','Breakfast','Dinner') 
group by e.emp_id, e.empName, e.EmpSrName; 
2

これを単純な結合と集計を使用してジョブを実行しますが、目的の出力に異なる出力を生成します。

CREATE TABLE #Employee 
    ([Emp_ID] int, [EmpName] varchar(6), [EmpSrname] varchar(8)) 
; 

INSERT INTO #Employee 
    ([Emp_ID], [EmpName], [EmpSrname]) 
VALUES 
    (1001, 'John', 'Wilkes'), 
    (1002, 'Sandra', 'Minotaur'), 
    (1003, 'Dante', 'Inferno') 
; 


CREATE TABLE #Expenses 
    ([Emp_ID] int, [Expense_Name] varchar(11), [Amount] int) 
; 

INSERT INTO #Expenses 
    ([Emp_ID], [Expense_Name], [Amount]) 
VALUES 
    (1001, 'Lunch', 25), 
    (1002, 'Drinks', 55), 
    (1003, 'Hotel', 120), 
    (1002, 'Dinner', 80), 
    (1001, 'Breakfast', 20), 
    (1002, 'LineDancing', 15) 
; 

SELECT em.Emp_ID , 
     em.EmpName , 
     em.EmpSrname , 
     sum(ex.Amount) Total 
FROM #Employee em INNER JOIN #Expenses ex ON ex.Emp_ID = em.Emp_ID 
WHERE ex.Expense_Name IN ('Lunch','Breakfast','Dinner') 
GROUP BY em.Emp_ID , 
     em.EmpName , 
     em.EmpSrname 

DROP TABLE #Employee 
DROP TABLE #Expenses 

を生成します:あなたはシンプルJOINGROUP BYでこれを行うことができます

Emp_ID EmpName EmpSrname Total 
1001 John Wilkes  45 
1002 Sandra Minotaur 80 
1

Select E.Emp_Id, E.EmpName, E.EmpSrname, 
     Sum(X.Ammount) As TotalFood 
From Employee E 
Join Expenses X On X.Emp_Id = E.Emp_Id 
         And X.Expense_Name In ('Breakfast', 'Lunch', 'Dinner') 
Group By E.Emp_Id, E.EmpName, E.EmpSrname 

注意、ご希望の結果があなたのデータと一致していません。サンプルデータに基づいて、これらは結果でなければなりません:

Emp_ID EmpName EmpSrname TotalFood 
1001 John  Wilkes  45 
1002 Sandra Minotaur 80 
関連する問題