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
SELECT r.* FROM ( SELECT t.*, ((autoPlan / aPanelQty) * bPanelQty) AS bPanelToAdd FROM ( SELECT a.*, ABS((CASE WHEN a.inStock < a.minStock THEN (ceil(((CASE WHEN (a.totalReq < 15 OR a.totalReq IS NULL) THEN 25 ELSE a.totalReq * 2 END) - a.inStock) / (a.aPanelQty * a.OptimumBoardMultiplay))) * (a.aPanelQty * a.OptimumBoardMultiplay) else 0 END)) AS autoPlan FROM ( SELECT ip.ifsCode, ip.description, (CASE WHEN (id.totalReq < 15 OR id.totalReq IS NULL) THEN 25 ELSE id.totalReq * 2 END) AS minStock, (CASE WHEN (id.totalReq < 15 OR id.totalReq IS NULL) THEN 25 ELSE id.totalReq * 3 END) AS maxStock, ip.bPanelDescription, ip.aPanelQty, ip.bPanelQty, id.totalReq, ist.inStock, ip.OptimumBoardMultiplay, ( SELECT 2 FROM imaProduction2 ipr WHERE ipr.bPanelDescription = ip.ifsCode LIMIT 1 ) AS totalProd FROM imaProduction2 ip LEFT JOIN imaDemand id ON id.partNo = ip.ifsCode LEFT JOIN imaStock ist ON ist.partNo = ip.ifsCode GROUP BY ip.ifsCode, ip.bPanelDescription, ip.aPanelQty, ip.bPanelQty, id.totalReq, ist.inStock, ip.description, ip.OptimumBoardMultiplay ) a ) t )r