在操作表中,库存始终处于运动状态。托盘被预订,在不同地点之间移动,最后预订。
这张表非常大,大约有200,000条记录。由于合同不同,有不同的方式来发票。 因此我创建了一个SCD表,它只跟踪所有托盘。 SCD每5分钟更新一次。
表格可以填写如下:
RecordID PalletID Colli Owner FromDate TillDate Active
1 1 100 ClientB 01-05-2015 08:15 07-05-2015 16:30 No
2 2 100 ClientA 01-05-2015 08:15 03-05-2015 10:50 No
3 3 100 ClientC 01-05-2015 08:15 31-12-2050 00:00 Yes
4 4 100 ClientA 01-05-2015 08:15 07-05-2015 16:30 No
5 2 70 ClientA 03-05-2015 10:50 09-05-2015 12:05 No
6 1 50 ClientB 07-05-2015 16:30 08-05-2015 07:10 No
7 4 10 ClientA 07-05-2015 16:30 31-12-2015 00:00 Yes
8 5 250 ClientB 08-05-2015 07:25 31-12-2015 00:00 Yes
我的问题是:我如何确定,在一周时间内(例如04-05-2015 - 2015年5月10日),哪个时刻对于特定客户有最大量的colli,或者最大量的托盘(1托盘ID = 1托盘)?
以时间表的形式,它看起来像这样:
1-5-2015 2-5-2015 3-5-2015 4-5-2015 5-5-2015 6-5-2015 7-5-2015 8-5-2015 9-5-2015 10-5-2015 11-5-2015 12-5-2015
1 100 100 100 100 100 100 100 50
2 100 100 100 70 70 70 70 70 70
3 100 100 100 100 100 100 100 100 100 100 100 100
4 100 100 100 100 100 100 100 10 10 10 10 10
5 250 250 250 250 250
Pallets 4 4 4 4 4 4 4 5 4 3 3 3
Colli 400 400 400 370 370 370 370 480 430 360 360 360
如您所见,8-5-2015是股票最高的日子,托盘(5)和colli(480)。我怎样才能从表中得到这个结果?
答案 0 :(得分:1)
您可以使用以下方法获得最大值。记下每个日期/时间并给它一个数字:+1表示预订,-1表示预订。然后做累积总和并取最大值:
- (void)viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:NO];
self.navigationItem.title = @"Advanced Settings";
UIColor *bg = [UIColor colorWithRed:79/255.0f green:166/255.0f blue:196/255.0f alpha:1.0f];
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
// iOS 6.1 or earlier
self.navigationController.navigationBar.tintColor = bg;
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};
} else {
// iOS 7.0 or later
self.navigationController.navigationBar.barTintColor = bg;
self.navigationController.navigationBar.translucent = NO;
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};
}
}
唯一可能的问题是ContentPlaceHolder cph = (ContentPlaceHolder)this.Master.FindControl("ContentPlaceHolder1");
列中的关联。但是,您必须指定在日期/时间上存在完全匹配时会发生什么 - 如果您使用内置的select top 1 dte, sum(inc) over (order by dte) as pallets_in_use
from ((select fromDate as dte, 1 as inc
from scd
) union all
(select todate, -1
from scd
)
) s
order by pallets_in_use desc;
数据类型,则不太可能。
注意:SQL Server 2012+中提供累积总和。如果您使用的是早期版本,则可以通过其他方式进行累积求和。
编辑:
在SQL Server 2008中:
datetime