Sql 总和(字段_1)不超过总和(字段_2)
也许有更好的方法可以实现,但我所拥有的是:Sql 总和(字段_1)不超过总和(字段_2),sql,tsql,sum,report,Sql,Tsql,Sum,Report,也许有更好的方法可以实现,但我所拥有的是: 环境-Plex ERP-SQL查询编辑器 后端-SQL Server 2012 摘要 基于制造复杂性,零件具有“单位”价值 有时我们会运送零件。其他日子我们没有 零件单位汇总为计划发货的每一天的“Rel_units_Calc” 该工厂每天可获得5台机组的积分(开放时)‘机组倍增器’ 该每日积分为每天“单位容量”的总和 为了防止在一个缓慢的月份出现产能过载,我需要防止工厂在总量(单位产能)超过总量(相对单位计算)时获得5个单位的信用 将创建一个报告,该
环境-Plex ERP-SQL查询编辑器
后端-SQL Server 2012 摘要
- 基于制造复杂性,零件具有“单位”价值
- 有时我们会运送零件。其他日子我们没有
- 零件单位汇总为计划发货的每一天的“Rel_units_Calc”
- 该工厂每天可获得5台机组的积分(开放时)‘机组倍增器’
- 该每日积分为每天“单位容量”的总和
- 为了防止在一个缓慢的月份出现产能过载,我需要防止工厂在总量(单位产能)超过总量(相对单位计算)时获得5个单位的信用李>
- 将创建一个报告,该报告将使用case语句评估Rel_Units_Calc>Unit_Capcity,然后显示红色或绿色
SELECT
DISTINCT FDPO.FULL_DATE,
----case statement below to create an include flag. It will exclude weekends unless we have a shipment going out
(CASE WHEN (DATENAME(dw, DATEADD(d,0,FDPO.Full_Date)) NOT IN
('Saturday','Sunday')) THEN 1
WHEN (DATENAME(dw, DATEADD(d,0,FDPO.Full_Date)) IN
('Saturday','Sunday')) AND FDPO.DUE_DATE IS NOT NULL THEN 1
ELSE 0 END) AS 'Include'
INTO #Capacity_Temp1
FROM #FDPO AS FDPO
此临时表使用include标志删除不应累积容量的日期,并添加容量列
SELECT
CT1.FULL_DATE,
@Unit_Multiplier AS 'Unit_multiplier'
INTO #Capacity_Temp2
FROM #Capacity_Temp1 AS ct1
WHERE ct1.INCLUDE= 1
下面的临时表将每天的单位乘数相加
SELECT
DISTINCT CT2.FULL_DATE,
CT2.Unit_multiplier,
SUM(CT2.Unit_multiplier) OVER (Order By CT2.FULL_DATE) AS 'Unit_Capacity'
INTO #Unit_Capacity
FROM #Capacity_Temp2 AS CT2
最终显示查询
SELECT
RUC.FULL_DATE,
RUC.Release_Units,
RUC.Release_Units_Calc,--running talley of the release units
ISNULL(UC.Unit_multiplier,0) AS 'Unit_multiplier',
-- credit units given per day except when closed
UC.Unit_Capacity --running talley of the unit multiplier
FROM #RUC AS RUC
LEFT JOIN #Unit_Capacity AS UC
ON UC.FULL_DATE = RUC.FULL_DATE
目前的产出:
╔══════╦═══════════════╦════════════════╦═════════════════╦═══════════════╗
║ DATE ║ Release_Units ║ Rel_Units_Calc ║ Unit_multiplier ║ Unit_Capacity ║
╠══════╬═══════════════╬════════════════╬═════════════════╬═══════════════╣
║ 8/3 ║ 15 ║ 15 ║ 5 ║ 5 ║
║ 8/4 ║ NULL ║ 15 ║ 5 ║ 10 ║
║ 8/5 ║ 20 ║ 50 ║ 5 ║ 15 ║
║ 8/5 ║ 15 ║ 50 ║ 5 ║ 15 ║
║ 8/6 ║ NULL ║ 50 ║ 0 ║ NULL ║
║ 8/7 ║ NULL ║ 50 ║ 5 ║ 20 ║
║ 8/8 ║ NULL ║ 50 ║ 5 ║ 25 ║
║ 8/9 ║ NULL ║ 50 ║ 5 ║ 30 ║
║ 8/10 ║ NULL ║ 50 ║ 5 ║ 35 ║
║ 8/11 ║ NULL ║ 50 ║ 5 ║ 40 ║
║ 8/12 ║ 15 ║ 65 ║ 5 ║ 45 ║
║ 8/13 ║ NULL ║ 65 ║ 0 ║ NULL ║
║ 8/14 ║ NULL ║ 65 ║ 5 ║ 50 ║
║ 8/15 ║ NULL ║ 65 ║ 5 ║ 55 ║
║ 8/16 ║ 10 ║ 75 ║ 5 ║ 60 ║
║ 8/17 ║ NULL ║ 75 ║ 5 ║ 65 ║
║ 8/18 ║ NULL ║ 75 ║ 5 ║ 70 ║
║ 8/19 ║ NULL ║ 75 ║ 0 ║ NULL ║
║ 8/20 ║ NULL ║ 75 ║ 0 ║ NULL ║
║ 8/21 ║ NULL ║ 75 ║ 5 ║ 75 ║
║ 8/22 ║ NULL ║ 75 ║ 5 ║ 80 ║
║ 8/23 ║ NULL ║ 75 ║ 5 ║ 85 ║
║ 8/24 ║ NULL ║ 75 ║ 5 ║ 90 ║
║ 8/25 ║ NULL ║ 75 ║ 5 ║ 95 ║
║ 8/26 ║ 10 ║ 95 ║ 5 ║ 100 ║
║ 8/27 ║ 10 ║ 95 ║ 5 ║ 105 ║
╚══════╩═══════════════╩════════════════╩═════════════════╩═══════════════╝
问题发生在8月22日,我们开始超过Rel_Units_Calc字段。这允许在8/27下订单,但不会触发红色,因为单位容量将大于相对单位计算
抱歉发了这么长的邮件。如果有更好的方法来实现这一点,我愿意接受任何建议
提前感谢,迈克这篇文章很长。。但我看不到你的总结。但是,如果你需要在求和后限制值,请使用HAVING子句。你建议的逻辑是将库存单位分布在未来的日期?太多的文字无法说明这个故事的简化版本。我想你建议的是单位容量的计算问题。单位容量,但是你不能公开这些信息。谢谢jidexl21。看看现在有没有功能。看起来它可能会起作用。其目的是,一旦工厂赶上机组(当Rel_units_Calc=机组容量时),机组容量将不会累积到5台机组,直到下一个订单完成。下一个订单的下一个订单将增加相对单位计算,允许单位容量增加5个单位。相当长的一段时间。。但我看不到你的总结。但是,如果你需要在求和后限制值,请使用HAVING子句。你建议的逻辑是将库存单位分布在未来的日期?太多的文字无法说明这个故事的简化版本。我想你建议的是单位容量的计算问题。单位容量,但是你不能公开这些信息。谢谢jidexl21。看看现在有没有功能。看起来它可能会起作用。其目的是,一旦工厂赶上机组(当Rel_units_Calc=机组容量时),机组容量将不会累积到5台机组,直到下一个订单完成。下一个订单的下一个订单将增加相对单位计算,允许单位容量增加5个单位。