Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak napisac SUMIF w SQL
fumfel20
post 20.05.2018, 11:15:08
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 17.09.2015

Ostrzeżenie: (0%)
-----


Witam.
Panowie, przepisuje plany produkcyjne w pewnej fabryce ktore kiedys napisałem w Excelu do PHP i mam problem jak zastapić SUMIF na zapytanie SQL. Wyjaśniam jak to działa. Maszyna tnie wielkie płyty 5000cm x 2000m na potrzebna ilosc paneli. Jezeli w programie maszyny jest napisane ze z jednej płyty ma powstac 21 paneli o wymiarach 720x660 (nazwijmy go panel A) to nie ma problemu, czasem jednak zdarza sie ze przy okazji produkcji panela A zostaje jeszcze miejsce na Panel B. I ten panel B musze policzyc w SQL. Przyklad rezultatu zapytania.

SQL rezultat

Jak widzicie na koncu jest kolumna bPanelToAdd ktora pokazuje nam ze przy produkcji panela A (w tym przypadku KE.208.090.WH w ilosci sztuk 96) powstanie 48 panela B KE.208.072.WH. I to akurat jest prawda jednak ja potrzebuje dodac ten bPanelToAdd w innej kolumnie do autoPlan czyli w tym przypadku do pierwszego wiersza zeby to wygladalo tak, autoplan+bPanelToAdd = 168+48=216

Zapytanie ktore do tej pory zrobilem

  1. SELECT r.* FROM (
  2. SELECT
  3. t.*,
  4. ((autoPlan / aPanelQty) * bPanelQty) AS bPanelToAdd
  5. FROM (
  6. SELECT
  7. a.*,
  8. ABS((CASE
  9. WHEN a.inStock < a.minStock
  10. THEN
  11. (ceil(((CASE WHEN (a.totalReq < 15 OR a.totalReq IS NULL)
  12. THEN 25
  13. ELSE a.totalReq * 2 END) - a.inStock) /
  14. (a.aPanelQty * a.OptimumBoardMultiplay))) * (a.aPanelQty * a.OptimumBoardMultiplay)
  15. else 0 END)) AS autoPlan
  16. FROM (
  17. SELECT
  18. ip.ifsCode,
  19. ip.description,
  20. (CASE WHEN (id.totalReq < 15 OR id.totalReq IS NULL)
  21. THEN 25
  22. ELSE id.totalReq * 2 END) AS minStock,
  23. (CASE WHEN (id.totalReq < 15 OR id.totalReq IS NULL)
  24. THEN 25
  25. ELSE id.totalReq * 3 END) AS maxStock,
  26. ip.bPanelDescription,
  27. ip.aPanelQty,
  28. ip.bPanelQty,
  29. id.totalReq,
  30. ist.inStock,
  31. ip.OptimumBoardMultiplay,
  32.  
  33. (
  34. SELECT 2
  35. FROM imaProduction2 ipr
  36. WHERE ipr.bPanelDescription = ip.ifsCode
  37. LIMIT 1
  38. ) AS totalProd
  39. FROM imaProduction2 ip
  40. LEFT JOIN imaDemand id ON id.partNo = ip.ifsCode
  41. LEFT JOIN imaStock ist ON ist.partNo = ip.ifsCode
  42. GROUP BY ip.ifsCode,
  43. ip.bPanelDescription,
  44. ip.aPanelQty,
  45. ip.bPanelQty,
  46. id.totalReq,
  47. ist.inStock,
  48. ip.description,
  49. ip.OptimumBoardMultiplay
  50. ) a
  51. ) t
  52. )r


Ten post edytował fumfel20 20.05.2018, 11:17:16
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 09:00