Sql-Server-2005
左表中的所有行以及右表中的金額總和
我正在嘗試返回上週的客戶列表和他們的交易總和,但是讓查詢返回根本沒有下注的客戶。我正在嘗試使用左連接來執行此操作,但是如果客戶下注,查詢只會返回一行,這不是我期望左連接起作用的方式。我能做些什麼來使這項工作按我想要的方式工作?
select i.accountnumber, i.firstname, i.lastname, sum(a.amount) from accountinformaton i left join accountactivity a on i.accountnumber = a.accountnumber where a.transactiontype = 'Bet' and a.transactiondate >='2015-07-31' group by i.accountnumber, i.firstname, i.lastname
‘accountinformation’ 表有數千行,上面的查詢返回幾百行。我期望能夠從“accountinformation”返回所有行,並且在沒有下注的賬戶上總和為空。
我自己想通了。我的 where 子句告訴 sql 只顯示“Bet”並具有該日期條件的行,所以在我沒有意識到的情況下,我告訴 sql 向我顯示有下注的行。
這是我的替代查詢…
select i.accountnumber, i.firstname, i.lastname, sum(isnull(amount,0)) from accountinformation i left join accountactivity a on i.accountnumber = a.accountnumber and a.transactiondate >='2015-07-31' and a.transactiontype = 'Bet' group by i.accountnumber, i.firstname, i.lastname
將條件放在 join 子句而不是 where 子句中會使左連接按預期執行。