0
我有一個SQL查詢,我需要將LINQ轉換爲SQL。我成功了,直到它來到Sums,我完全陷在那裏。我知道如何做單個/簡單的分組和總結,但這次我非常需要幫助。我會很感激任何想法。林克查詢與多個總和,分組和連接
表的關係是這樣的:
TreeNodes - one-to-many - Dispatches (not every TreeNode has Dispatch entry)
Dispatches - one-to-many - DispatchesJobs (not every Dispatch has DispatchJob entry)
DispatchesJobs one-to-many - DispatchesJobsReceivings (not every DispatchJob has DispatchJobReceiving entry)
基本上我需要找出是:
對於每一個調度: 獲取調度的樹節點名稱和數量,花,返回計數從DispatchesJobsReceivings表。
這裏是我的SQL查詢:
select t.TreeNodes_id, t.name
sum(djr.quantity) as quantity, sum(djr.returns) as returns, sum(djr.spent) as spent
from TreeNodes as t
inner join Dispatches as d
on t.TreeNodes_id = d.TreeNodes_id
left outer join DispatchesJobs as dj
on d.Dispatches_id = dj.Dispatches_id
left outer join DispatchesJobsReceivings as djr
on dj.DispatchesJobs_id = djr.DispatchesJobs_id
group by t.TreeNodes_id, t.name
哪個給出了這樣的結果:
TreeNodes_id name quantity returns spent
------------ ------------ ------- ------- ----------
77 CEMENT 20 17 3
122 SAND NULL NULL NULL
我已經走到這一步它翻譯:
from t in db.TreeNodes
join d in db.Dispatches
on t.TreeNodes_id equals d.TreeNodes_id
join dj in db.Dispatches_Jobs
on d.Dispatches_id equals dj.Dispatches_id
into tmpDJ
from rowTmpDJ in tmpDJ.DefaultIfEmpty()
join djr in db.DispatchesJobsReceivings
on rowTmpDj.DispatchesJobs_id equals djr.DispatchesJobs_id
into tmpDjr
from rowTmpDjr in tmpDjr.DefaultIfEmpty()
select new
{
TreeNode_id = t.TreeNodes_id,
name = t.name,
quantity = rowTmpDjr.quantity,
returns = rowTmpDjr.returns,
spent = rowTmpDjr.spent
};
哪個給出了這樣的結果:
TreeNodes_id name quantity returns spent
------------ ------------ ------ -------- ----------
77 CEMENT 1 0 1
77 CEMENT 2 0 2
77 CEMENT 4 4 0
77 CEMENT 13 13 0
122 SAND NULL NULL NULL
而我卡在這裏。我會很感激任何幫助。