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.
Przejdz do zalacznika zeby pobrac rezultat ponizszego zapytania.
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