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

Dan*_*iel 5 sql sql-server sql-server-2005 prediction

当前,队列向我显示了烤箱中产品的工作量以及烤箱中产品的工作量,但是实际上是在烤箱外进行了几个小时的测试。

我用每种产品的“ gesamt”来计算h->这告诉我它们已经在烤箱中停留了多长时间。通常,产品在db中“Zielgröße”中定义的烤箱中放置1000h。

我想要的是队列应该向我显示烤箱在接下来的2周内的工作量,以此作为预测(336h)。那就是所有未显示在队列中的“Zielgröße”(大多数为1000)上的“ gesamt”,都可以在临时表中处理。

是否可以在Micrososft 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
Run Code Online (Sandbox Code Playgroud)

在此表中以示例显示我想要的

实际工作量

          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
Run Code Online (Sandbox Code Playgroud)

2周内的工作量

         TesterID       Name    TesterNr   Anzahl      gesamt
         -------------- ------- ---------- ----------- -----------
Product1        8              KPS02   2          1           545
Product2        8              KPS02   2          1           552
Run Code Online (Sandbox Code Playgroud)

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

Product3    8              KPS02   2          1           1152
Product4    8              KPS02   2          1           1171
Run Code Online (Sandbox Code Playgroud)

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

Jim*_*son 4

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

\n\n
SELECT TesterID,Name, TesterNr, COUNT(Name) as Anzahl, gesamt + 336 as gesamt\nFROM \n(SELECT AllgemeineAngaben.QualiID, \n                                Bezeichnung, \n                                AnzModule, \n                                Tester.Name, TesterNr, \n                                Testname,\n                                v_gesamtBerechnungLaufend.TestaufstellungID, \n                                lastRO, \n                                gesamt, \n                                v_gesamtBerechnungLaufend.Einheit, \n                                v_gesamtBerechnungLaufend.PlanID,\n                                v_gesamtBerechnungLaufend.TesterID\n                        FROM DB.dbo.AllgemeineAngaben inner join\n                        DB.dbo.v_gesamtBerechnungLaufend on \n                        AllgemeineAngaben.QualiID = v_gesamtBerechnungLaufend.QualiID inner join\n                        DB.dbo.Tester on  \n                        Tester.TesterID = v_gesamtBerechnungLaufend.TesterID inner join\n                        DB.dbo.Testaufstellung on  \n                        Testaufstellung.TestaufstellungID = v_gesamtBerechnungLaufend.TestaufstellungID inner join\n                        DB.dbo.Testnamen on Testnamen.TestnameID = Testaufstellung.TestnameID\n                        Where Tester.Name = 'KPS02'\n                            UNION ALL\n                            SELECT  AllgemeineAngaben.QualiID, \n                        Bezeichnung, AnzModule, Tester.Name, TesterNr, \n                        Testname,\n                        Testaufstellung.TestaufstellungID, \n                        v_gesamtBerechnung.gesamt as lastRO, \n                        v_gesamtBerechnung.gesamt, \n                        v_gesamtBerechnung.Einheit, \n                        v_gesamtBerechnung.PlanID, \n                        v_gesamtBerechnung.TesterID\n                FROM    DB.dbo.AllgemeineAngaben inner join\n                        DB.dbo.v_gesamtBerechnung on \n                        AllgemeineAngaben.QualiID = v_gesamtBerechnung.QualiID inner join\n                        DB.dbo.Tester on  \n                        Tester.TesterID = v_gesamtBerechnung.TesterID inner join\n                        DB.dbo.Testaufstellung on  \n                        Testaufstellung.TestaufstellungID = v_gesamtBerechnung.TestaufstellungID inner join\n                        DB.dbo.Testnamen on Testnamen.TestnameID = Testaufstellung.TestnameID\n                        WHERE Testaufstellung.fertig ='0'\n                        AND Testaufstellung.aktiv ='1'\n                        AND Testaufstellung.Zielgr\xc3\xb6\xc3\x9fe > v_gesamtBerechnung.gesamt\n                        AND Tester.Name = 'KPS02'\n                        AND v_gesamtBerechnung.TestaufstellungID not in (Select TestaufstellungID from DB.dbo.v_gesamtBerechnungLaufend)) x\n                        group by TesterID, Name, TesterNr, gesamt\n) A\nWHERE gesamt + 336 < 1000\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n