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)
我希望你们能跟着我。谢谢你的帮助。
我将编辑这个答案直到它解决,但这是我的第一次尝试:
\n\nSELECT 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\nRun Code Online (Sandbox Code Playgroud)\n\n在我看来,您所需要做的就是将 336 添加到当前值,然后过滤掉任何小于 1000 的值。
\n| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |