2013-04-04 57 views
2

我對SQL有一個相當容易的問題,我只是無法正確地輸入它(因此我沒有在Google中找到任何東西,而我的標題可能是誤導)SQL:從列A中選擇全部並從列B中添加一個值(如果存在的話)

問題是:我有一個大表中包含的形式(ID,EmployeeID,日期,價值)(和更多,但只有這些問題目前)的交易信息和所有EmployeeID列表。我想要的是一個結果表,其中顯示了在給定時間範圍內所有員工ID與他們的交易總值。 問題是:如何讓這些員工進入結果表格,該表格在給定的時間段內沒有條目?

例如

ID EMPLID DATE  VALUE 
1 1  2013-01-01 1000 
2 2  2013-02-02 2000 
3 1  2013-01-03 3000 
4 2  2013-04-01 2000 
5 2  2013-03-01 2000 
6 1  2013-02-01 4000 

EMPLID NAME 
1  bob 
2  alice 

,現在我想2013-03-01這樣

EMPLID VALUE 
1  0   <- how to get this based on the employee table? 
2  4000 

在使用SQL Server的火鳥,我通過JDBC連接到它(如果該事項後,所有交易的彙總值)

回答

4
SELECT a.EmpID, a.Name, 
     COALESCE(SUM(b.Value), 0) TotalValue 
FROM Employee a 
     LEFT JOIN Transactions b 
      ON a.EmpID = b.EmpID AND 
       b.Date >= '2013-03-01' 
GROUP BY a.EmpID, a.Name 

爲了進一步獲得更多的知識有關加入,請訪問以下鏈接:

+0

啊哈哈。 left join>。>我知道這很簡單,謝謝 – incaseoftrouble 2013-04-04 12:30:39

+0

'LEFT JOIN'會列出* lefthand side *表中的所有記錄,不管它是否在* righthand *表中有匹配的記錄。 – 2013-04-04 12:32:08

相關問題