SQL队列在2周内获得工作负载[SQL Server]

问题描述 投票:5回答:1

目前,队列显示了产品在烤箱中的工作量以及在烤箱中的产品的工作量,但实际上在烤箱外的测试中持续了几个小时。

我用每个产品的“gesamt”计算h - >这告诉我他们已经在烤箱里待了多久。大多数产品在烤箱中保持1000小时,在db中的“Zielgröße”中定义。

我想要的是队列应该向我显示接下来2周的烤箱工作量作为预测(336h)。那些在队列中未显示的“Zielgröße”(大多数是1000)的“gesamt”可能是在临时表或其他任何地方处理的。

是否可以在Microsoft SQL Server中处理此问题?

这是代码:

SELECT TesterID,Name, TesterNr, COUNT(Name) as Anzahl, gesamt  FROM 
(SELECT AllgemeineAngaben.QualiID, 
                                Bezeichnung, 
                                AnzModule, 
                                Tester.Name, TesterNr, 
                                Testname,
                                v_gesamtBerechnungLaufend.TestaufstellungID, 
                                lastRO, 
                                gesamt, 
                                v_gesamtBerechnungLaufend.Einheit, 
                                v_gesamtBerechnungLaufend.PlanID,
                                v_gesamtBerechnungLaufend.TesterID
                        FROM DB.dbo.AllgemeineAngaben inner join
                        DB.dbo.v_gesamtBerechnungLaufend on 
                        AllgemeineAngaben.QualiID = v_gesamtBerechnungLaufend.QualiID inner join
                        DB.dbo.Tester on  
                        Tester.TesterID = v_gesamtBerechnungLaufend.TesterID inner join
                        DB.dbo.Testaufstellung on  
                        Testaufstellung.TestaufstellungID = v_gesamtBerechnungLaufend.TestaufstellungID inner join
                        DB.dbo.Testnamen on Testnamen.TestnameID = Testaufstellung.TestnameID
                        Where Tester.Name = 'KPS02'
                            UNION ALL
                            SELECT  AllgemeineAngaben.QualiID, 
                        Bezeichnung, AnzModule, Tester.Name, TesterNr, 
                        Testname,
                        Testaufstellung.TestaufstellungID, 
                        v_gesamtBerechnung.gesamt as lastRO, 
                        v_gesamtBerechnung.gesamt, 
                        v_gesamtBerechnung.Einheit, 
                        v_gesamtBerechnung.PlanID, 
                        v_gesamtBerechnung.TesterID
                FROM    DB.dbo.AllgemeineAngaben inner join
                        DB.dbo.v_gesamtBerechnung on 
                        AllgemeineAngaben.QualiID = v_gesamtBerechnung.QualiID inner join
                        DB.dbo.Tester on  
                        Tester.TesterID = v_gesamtBerechnung.TesterID inner join
                        DB.dbo.Testaufstellung on  
                        Testaufstellung.TestaufstellungID = v_gesamtBerechnung.TestaufstellungID inner join
                        DB.dbo.Testnamen on Testnamen.TestnameID = Testaufstellung.TestnameID
                        WHERE Testaufstellung.fertig ='0'
                        AND Testaufstellung.aktiv ='1'
                        AND Testaufstellung.Zielgröße > v_gesamtBerechnung.gesamt
                        AND Tester.Name = 'KPS02'
                        AND v_gesamtBerechnung.TestaufstellungID not in (Select TestaufstellungID from DB.dbo.v_gesamtBerechnungLaufend)) x
                        group by TesterID, Name, TesterNr, gesamt

这里的表格在一个例子中展示了我想要的东西

实际工作量

          TesterID       Name    TesterNr   Anzahl      gesamt
          -------------- ------- ---------- ----------- -----------
Product1    8              KPS02   2          1           209
Product2    8              KPS02   2          1           216
Product3    8              KPS02   2          1           816
Product4    8              KPS02   2          1           835

工作量在2周内完成

         TesterID       Name    TesterNr   Anzahl      gesamt
         -------------- ------- ---------- ----------- -----------
Product1        8              KPS02   2          1           545
Product2        8              KPS02   2          1           552

最后一条记录超过1000Zielgröße,所以只是不要在预测队列中显示它们

Product3    8              KPS02   2          1           1152
Product4    8              KPS02   2          1           1171

我希望你们能跟着我。谢谢你的帮助。

sql sql-server sql-server-2005 prediction
1个回答
4
投票

我会编辑这个答案直到它解决了,但这是我的第一次尝试:

SELECT TesterID,Name, TesterNr, COUNT(Name) as Anzahl, gesamt + 336 as gesamt
FROM 
(SELECT AllgemeineAngaben.QualiID, 
                                Bezeichnung, 
                                AnzModule, 
                                Tester.Name, TesterNr, 
                                Testname,
                                v_gesamtBerechnungLaufend.TestaufstellungID, 
                                lastRO, 
                                gesamt, 
                                v_gesamtBerechnungLaufend.Einheit, 
                                v_gesamtBerechnungLaufend.PlanID,
                                v_gesamtBerechnungLaufend.TesterID
                        FROM DB.dbo.AllgemeineAngaben inner join
                        DB.dbo.v_gesamtBerechnungLaufend on 
                        AllgemeineAngaben.QualiID = v_gesamtBerechnungLaufend.QualiID inner join
                        DB.dbo.Tester on  
                        Tester.TesterID = v_gesamtBerechnungLaufend.TesterID inner join
                        DB.dbo.Testaufstellung on  
                        Testaufstellung.TestaufstellungID = v_gesamtBerechnungLaufend.TestaufstellungID inner join
                        DB.dbo.Testnamen on Testnamen.TestnameID = Testaufstellung.TestnameID
                        Where Tester.Name = 'KPS02'
                            UNION ALL
                            SELECT  AllgemeineAngaben.QualiID, 
                        Bezeichnung, AnzModule, Tester.Name, TesterNr, 
                        Testname,
                        Testaufstellung.TestaufstellungID, 
                        v_gesamtBerechnung.gesamt as lastRO, 
                        v_gesamtBerechnung.gesamt, 
                        v_gesamtBerechnung.Einheit, 
                        v_gesamtBerechnung.PlanID, 
                        v_gesamtBerechnung.TesterID
                FROM    DB.dbo.AllgemeineAngaben inner join
                        DB.dbo.v_gesamtBerechnung on 
                        AllgemeineAngaben.QualiID = v_gesamtBerechnung.QualiID inner join
                        DB.dbo.Tester on  
                        Tester.TesterID = v_gesamtBerechnung.TesterID inner join
                        DB.dbo.Testaufstellung on  
                        Testaufstellung.TestaufstellungID = v_gesamtBerechnung.TestaufstellungID inner join
                        DB.dbo.Testnamen on Testnamen.TestnameID = Testaufstellung.TestnameID
                        WHERE Testaufstellung.fertig ='0'
                        AND Testaufstellung.aktiv ='1'
                        AND Testaufstellung.Zielgröße > v_gesamtBerechnung.gesamt
                        AND Tester.Name = 'KPS02'
                        AND v_gesamtBerechnung.TestaufstellungID not in (Select TestaufstellungID from DB.dbo.v_gesamtBerechnungLaufend)) x
                        group by TesterID, Name, TesterNr, gesamt
) A
WHERE gesamt + 336 < 1000

在我看来,您需要做的就是将336添加到当前值,然后过滤掉少于1000的任何值。

© www.soinside.com 2019 - 2024. All rights reserved.