Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 白天和周日?比如说,我有一个每天12倍和每周53倍的订单,希望每天不超过4倍。我结束了吗?@NetMage谢谢你的评论。某些类型的机组有限制,例如,A机组限制为每天12台,B机组限制为每周30台,C机组限制为每月20台,D机组限制为每年1台。在验证时,我一_C#_Sql Server_Grouping_Intervals_Frequency - Fatal编程技术网

C# 白天和周日?比如说,我有一个每天12倍和每周53倍的订单,希望每天不超过4倍。我结束了吗?@NetMage谢谢你的评论。某些类型的机组有限制,例如,A机组限制为每天12台,B机组限制为每周30台,C机组限制为每月20台,D机组限制为每年1台。在验证时,我一

C# 白天和周日?比如说,我有一个每天12倍和每周53倍的订单,希望每天不超过4倍。我结束了吗?@NetMage谢谢你的评论。某些类型的机组有限制,例如,A机组限制为每天12台,B机组限制为每周30台,C机组限制为每月20台,D机组限制为每年1台。在验证时,我一,c#,sql-server,grouping,intervals,frequency,C#,Sql Server,Grouping,Intervals,Frequency,白天和周日?比如说,我有一个每天12倍和每周53倍的订单,希望每天不超过4倍。我结束了吗?@NetMage谢谢你的评论。某些类型的机组有限制,例如,A机组限制为每天12台,B机组限制为每周30台,C机组限制为每月20台,D机组限制为每年1台。在验证时,我一次查看一个单元类型,并考虑其有效限制(大多数情况下仅为1个限制)。每日不包括周六和周日,一周中的任何一天。每天2台+每周5台3倍的订单在每周订单发生的当天就结束了(在那些日子里每天增加到7台)。在我看来,组合订单只是一种检查您是否未超过限额的方


白天和周日?比如说,我有一个每天12倍和每周53倍的订单,希望每天不超过4倍。我结束了吗?@NetMage谢谢你的评论。某些类型的机组有限制,例如,A机组限制为每天12台,B机组限制为每周30台,C机组限制为每月20台,D机组限制为每年1台。在验证时,我一次查看一个单元类型,并考虑其有效限制(大多数情况下仅为1个限制)。每日不包括周六和周日,一周中的任何一天。每天2台+每周5台3倍的订单在每周订单发生的当天就结束了(在那些日子里每天增加到7台)。在我看来,组合订单只是一种检查您是否未超过限额的方法。由于最短的限制期是1天,您可以将所有订单设置为一个公约数(1天)。计算每个订单每天的单位数(这将是一个浮动值),从那里可以很容易地计算出受订单开始/结束和限制期开始/结束限制的任何给定时间范围内的单位数。取整可能会有点棘手。其他(bruteforce)解决方案是分解订单,以便获得所有交付单位的单位对的日期数(最好只执行一次并保存到db),然后对给定的日期范围进行简单的选择计数。感谢@Furmek的建议。我不太明白你的第二个评论,但我真的很喜欢将单位计算到最低粒度的想法。不过,我担心舍入错误,在尝试之后,它似乎可以很好地用于重叠。我确实意识到我还有另一个问题。如果每月第一周有20套,最后一周有20套,则每月限购30套。它们没有重叠,但超过了限制,因此我认为我必须计算从最小开始到最大结束的订单的所有适用单位频率限制的单位数量。
Orders:
    |-----------------4 6x/week---------------|
                   |-------------8 1x/week-------------|
           |-------10 2x/month-------|

===========================================================
Combined Orders:
    |--a---|---b---|--------c--------|---d----|----e---|
Orders:
    |---10 units 2x/week---|       |---10 units 2x/week---|
2017-01-01                                           2017-01-31
===========================================================
Combined Orders:
    |--------20------------|       |----------20-----------|
-- Here we calculate daily unit amount for all orders that overlap a validation period.
-- [frequency] is in days
;WITH ValidationPeriodOrders AS(
SELECT ( unitAmount * frequencyAmount ) / [frequency] AS AvgDailyAmount
    -- Adjust order dates to be within Validation period
    CASE WHEN startDate < ValidationPeriodStart THEN ValidationPeriodStart ELSE startDate END AS OrderStart,
    CASE WHEN endDate > ValidationPeriodEnd THEN ValidationPeriodEnd ELSE endDate END AS OrderEnd
FROM Order
-- Look for orders that fall inside a validation period
WHERE endDate BETWEEN ValidationPeriodStart AND ValidationPeriodEnd
    OR startDate BETWEEN ValidationPeriodStart AND ValidationPeriodEnd
)
-- Get total units per validation period
SELECT SUM( AvgDailyAmount * DATEDIFF( dd, OrderStart, OrderEnd ))
FROM ValidationPeriodOrders