如何确定库存最多一周

时间:2015-05-18 11:07:15

标签: sql sql-server

在操作表中,库存始终处于运动状态。托盘被预订,在不同地点之间移动,最后预订。

这张表非常大,大约有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)。我怎样才能从表中得到这个结果?

1 个答案:

答案 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