Man.No ProdNumber Sequence Code Process1Time Process2Time Standard
1330 01864 1 H3 113 43
1330 01865 2 H3 97 39
1330 01866 3 H1 72 41
1330 01867 4 56 39
1330 01868 5 H3 50 39
1330 01869 6 H1 43 41
1330 01870 7 39 40
1331 01871 1 H2A 64 42
1331 01872 2 H2A 56 41
1331 01873 3 H2A 53 41
1331 01874 4 H2A 49 39
1331 01875 5 H2A 44 38
大家好,这个问题在过去的几个星期里一直困扰着我,我决定现在问,这对我来说并不是那么简单。我要计算过程标准时间。
这是故事,直到现在我手动完成了这个故事,条件是:
代码以H3或A3开头,开始时间为78 其他代码或空数据,开始时间为68
我们计算每个人的标准。例如,在Man.No = 1330,序列从1到7,对于序列号7在Man.No 1330,代码是空白的,标准将是 68 (仅供参考:序列号是可变的,可能是7,12,8或2,取决于具体情况)
Man.No ProdNumber Sequence Code Process1Time Process2Time Standard
1330 01864 1 H3 113 43
1330 01865 2 H3 97 39
1330 01866 3 H1 72 41
1330 01867 4 56 39
1330 01868 5 H3 50 39
1330 01869 6 H1 43 41
1330 01870 7 39 40 68
1331 01871 1 H2A 64 42
1331 01872 2 H2A 56 41
1331 01873 3 H2A 53 41
1331 01874 4 H2A 49 39
1331 01875 5 H2A 44 38
之后,要使用H1代码计算序列号6,必须以68'开头,我们必须使用以下公式计算: 提前标准(68)+(45-(当前Man.No的Process2Time的平均值))所以它将是(68)+(45 - ((43 + 39 + 41 + 39 + 39 + 41 + 40)/ 7) ))= 68+(45-40.3)= 68 + 4.7 = 72.7
Man.No ProdNumber Sequence Code Process1Time Process2Time Standard
1330 01864 1 H3 113 43
1330 01865 2 H3 97 39
1330 01866 3 H1 72 41
1330 01867 4 56 39
1330 01868 5 H3 50 39
1330 01869 6 H1 43 41 72.7
1330 01870 7 39 40 68
1331 01871 1 H2A 64 42
1331 01872 2 H2A 56 41
1331 01873 3 H2A 53 41
1331 01874 4 H2A 49 39
1331 01875 5 H2A 44 38
之后,要计算序列号为5的H3码,必须以78'开头,因为我需要更多时间(10')来处理产品,我们必须用这个公式计算:提前标准(72.7)+(45-(当前Man.No的Process2Time的平均值) +10 )。所以它将是:(72.7)+(45 - ((43 + 39 + 41 + 39 + 39 + 41 + 40)/ 7))) +10 = 72.7+(45-40.3) +10 = 72.7 + 4.7 + 10 = 87.4
Man.No ProdNumber Sequence Code Process1Time Process2Time Standard
1330 01864 1 H3 113 43
1330 01865 2 H3 97 39
1330 01866 3 H1 72 41
1330 01867 4 56 39
1330 01868 5 H3 50 39 87.4
1330 01869 6 H1 43 41 72.7
1330 01870 7 39 40 68
1331 01871 1 H2A 64 42
1331 01872 2 H2A 56 41
1331 01873 3 H2A 53 41
1331 01874 4 H2A 49 39
1331 01875 5 H2A 44 38
之后,要计算序列号4,空白码必须以68'开头,我们必须用这个公式计算:提前标准(87.4)+(45-(当前Man.No的Process2Time的平均值) ))。所以它将是:(87.4)+(45 - ((43 + 39 + 41 + 39 + 39 + 41 + 40)/ 7)))= 87.4+(45-40.3)= 87.4 + 4.7 = 92.1
Man.No ProdNumber Sequence Code Process1Time Process2Time standard
1330 01864 1 H3 113 43
1330 01865 2 H3 97 39
1330 01866 3 H1 72 41
1330 01867 4 56 39 92.1
1330 01868 5 H3 50 39 87.4
1330 01869 6 H1 43 41 72.7
1330 01870 7 39 40 68
1331 01871 1 H2A 64 42
1331 01872 2 H2A 56 41
1331 01873 3 H2A 53 41
1331 01874 4 H2A 49 39
1331 01875 5 H2A 44 38
继续使用带有H1代码的序列3,所以我们只需要加上4,7即92.1 + 4.7 = 96.8
Man.No ProdNumber Sequence Code Process1Time Process2Time Standard
1330 01864 1 H3 113 43
1330 01865 2 H3 97 39
1330 01866 3 H1 72 41 96.8
1330 01867 4 56 39 92.1
1330 01868 5 H3 50 39 87.4
1330 01869 6 H1 43 41 72.7
1330 01870 7 39 40 68
1331 01871 1 H2A 64 42
1331 01872 2 H2A 56 41
1331 01873 3 H2A 53 41
1331 01874 4 H2A 49 39
1331 01875 5 H2A 44 38
之后继续使用H3 Code的序列号2,记住,需要+10。所以它将是96.8 + 4.7 + 10 = 111.5
Man.No ProdNumber Sequence Code Process1Time Process2Time Standard
1330 01864 1 H3 113 43
1330 01865 2 H3 97 39 111.5
1330 01866 3 H1 72 41 96.8
1330 01867 4 56 39 92.1
1330 01868 5 H3 50 39 87.4
1330 01869 6 H1 43 41 72.7
1330 01870 7 39 40 68
1331 01871 1 H2A 64 42
1331 01872 2 H2A 56 41
1331 01873 3 H2A 53 41
1331 01874 4 H2A 49 39
1331 01875 5 H2A 44 38
所以最后我们转到第一个序列,它不会加+10,因为序列2也是H3 / A3需要相同的处理时间,所以我们只需要计算,111.5 + 4.7 = 116.2
Man.No ProdNumber Sequence Code Process1Time Process2Time Standard
1330 01864 1 H3 113 43 116.2
1330 01865 2 H3 97 39 111.5
1330 01866 3 H1 72 41 96.8
1330 01867 4 56 39 92.1
1330 01868 5 H3 50 39 87.4
1330 01869 6 H1 43 41 72.7
1330 01870 7 39 40 68
1331 01871 1 H2A 64 42
1331 01872 2 H2A 56 41
1331 01873 3 H2A 53 41
1331 01874 4 H2A 49 39
1331 01875 5 H2A 44 38
多数,这对我来说太可怕了,这就是为什么我想问这里,如果你认为我解释这个问题太复杂了,我不这么认为,因为这是解释这个可怕的事情最简单的方法。如果有人可以提供帮助,我将非常感激。
非常感谢你!
答案 0 :(得分:0)
因此,为了在sql中执行此操作,首先需要为Standard提供一个公式,该公式不依赖于下一个序列的标准值。第一部分很简单。如果代码是H3或A3,则需要78,否则需要68。
公式的下一部分基于平均值。您将需要具有相同Man.No的数据的所有process1次的平均值。随着我们向上移动序列,我们将这个平均值一次又一次地添加到原始值。使用您的示例,对于序列6,我们将平均值添加一次。对于序列5,我们将平均值加两次,对于序列4,我们将其加3次。这成为平均值*(最大序列# - 当前序列号)。对于序列7,我们将在0次上添加平均值。
这基本上就是您正在使用的整个公式。现在,我们可以在sql中使用此公式找到这些值。请注意,此代码未经过测试,不包含您的具体信息,因为您的问题中未包含这些详细信息。
Select
t.ManNum,
t.ProdNum,
t.Sequence,
t.Code,
t.Process1Time,
t.Process2Time,
(Select sum(Process1Time) / sum(1)
From tabletbl t2
Where t2.ManNum = t.ManNum
Group by t2.ManNum)
* ((Select max(Sequence)
From tabletbl t2
Where t2.ManNum = t.ManNum
Group by t2.ManNum))-t.Sequence)
+ Case When (t.Code = H3 or t.Code = A3) Then 78 else 68 End
as Standard
From tabletbl t