【发布时间】:2018-06-26 19:04:14
【问题描述】:
我有两个表,一个是发票表,另一个是发票上帐户的层次结构表
发票表:
| InvoiceNo| AccNo| InvoiceAmount |
--------------------------------------
| A1234| 345| 100.00 |
| A1235| 346| 95.00 |
| A1236| 347| 15.50 |
| A1237| 348| 20.10 |
层次结构表
| AccNo| HierAccNo| Level|
--------------------------------------
| 123| | 1 |
| 789| 123| 2 |
| 890| 123| 2 |
| 345| 789| 3 |
| 346| 789| 3 |
| 347| 890| 3 |
| 348| 890| 3 |
我要做的是将发票表中的金额汇总到最高级别的 AccNo,即 Level1,然后在单独的实例上从最高帐号回滚到下一个级别。
到目前为止,我可以通过以下方式累积到最高频段:
var BandL2 = from invoice in db.Invoices//Roll up to level 2
join ban in db.HierarchyTable
on invoice.AccNo equals ban.Ban
where invoice.GlobalInvoiceID == globalInvoice.Id
group invoice by ban.HierAccNo into bandHierarchy
select new
{
Level2Band = bandHierarchy.Key,
Amount = bandHierarchy.Sum(m=> m.InvoiceAmount)
};
var bandHierarchyTable = db.HierarchyTable.AsQueryable();
var BandL1 = from band2 in BandL2 // Roll Up to level 1
join band1 in bandHierarchyTable
on band2.Level2Band equals band1.Ban
group band2 by band1.HierAccNo into bandL1
select new
{
Level1Band = bandL1.Key,
Amount = bandL1.Sum(m => m.Amount)
};
但是现在我在反转流程并从级别 1 向下钻取时遇到了问题,因为表单中的唯一详细信息是级别 1 的 AccNo(例如 123)。 我正在尝试在钻探时使用弹出模式即时执行此操作。
如何再次向下钻取以便逐级获取金额? 示例:
以上代码的输出表
| AccNo| Amount|
--------------------------------------
| 123| 230.60 |
然后
| AccNo| Amount|
--------------------------------------
| 789| 195 |
| 890| 35.60|
然后点击其中一个 AccNo。
| AccNo| Amount|
--------------------------------------
| 345| 100|
| 346| 95 |
谢谢!
【问题讨论】:
标签: c# asp.net-mvc linq asp.net-mvc-5