DECLARE @zak char(5), @cex char(4), @ii int
SET @zak=:n_zak
SET @cex=:cex
SET @ii=:id
declare @t1 table ( kod int, ot float, tr float)
if (@ii>0 ) and (@cex='10' or @cex='12')
begin
insert into @t1
select kod_order, sum(trPodrOt), sum(trPodr) from tblOrder_Podr
where kod_order in (
select kod_order
from tblOrder O
LEFT OUTER JOIN Zak Z ON O.N_zak = Z.N_zak
where
(O.N_zak =@zak) AND
(O.Isp in ( '10', '12' )) AND
(O.Data_PDO IS NOT NULL) AND
(O.Tip_POD <> 16) AND
(Z.priz_annul = N'0') AND
(Z.priz_close = N'0')
)
group by kod_order
SELECT case
when t.kod is null then Round(O.trdo_57, 2)
else Round(O.trdo_57-t.ot, 2)
end as Trdo_57,
case
when t.kod is null then Round(O.trdz_57, 2)
else Round(O.Trdz_57-t.tr, 2)
end as Trdz_57,
case
when t.kod is null then ROUND(O.Trdz_57 - O.trdo_57, 2)
else ROUND(O.Trdz_57 - O.trdo_57-t.tr+t.ot, 2)
end as ost,
Round(O.Trdz_57-t.tr, 2) as Trdz_57, Round(O.trdo_57-t.ot, 2) as trdo_57, ROUND(O.Trdz_57 - O.trdo_57-t.tr+t.ot, 2) AS Ost,
SUBSTRING(O.N_POD, 1, 3) + '.' + SUBSTRING(O.N_POD, 4, 2) + '.' + SUBSTRING(O.N_POD, 6, 2)+ '.' + SUBSTRING(O.N_POD, 8, 1) + '.' + SUBSTRING(O.N_POD, 9, 2) + '.' + SUBSTRING(O.N_POD, 11, 3) AS Mpod,
O.*
FROM tblOrder O
LEFT OUTER JOIN Zak Z ON O.N_zak = Z.N_zak
LEFT OUTER JOIN @t1 T on kod=o.kod_order
WHERE(O.N_zak =@zak) AND
(O.Isp in ('10', '12')) AND
(O.Data_PDO IS NOT NULL) AND
(O.Tip_POD <> 16) AND
(Z.priz_annul = N'0') AND
(Z.priz_close = N'0')
order by mpod
end
else begin -- все остальнные цеха
insert into @t1
select kod_order, sum(trPodrOt), sum(trPodr) from tblOrder_Podr
where kod_order in (
select kod_order
from tblOrder O
LEFT OUTER JOIN Zak Z ON O.N_zak = Z.N_zak
where
(O.N_zak =@zak) AND
(O.Isp =@cex) AND
(O.Data_PDO IS NOT NULL) AND
(O.Tip_POD <> 16) AND
(Z.priz_annul = N'0') AND
(Z.priz_close = N'0')
)
group by kod_order
SELECT case
when t.kod is null then Round(O.trdo_57, 2)
else Round(O.trdo_57-t.ot, 2)
end as Trdo_57,
case
when t.kod is null then Round(O.trdz_57, 2)
else Round(O.Trdz_57-t.tr, 2)
end as Trdz_57,
case
when t.kod is null then ROUND(O.Trdz_57 - O.trdo_57, 2)
else ROUND(O.Trdz_57 - O.trdo_57-t.tr+t.ot, 2)
end as ost,
Round(O.Trdz_57-t.tr, 2) as Trdz_57, Round(O.trdo_57-t.ot, 2) as trdo_57, ROUND(O.Trdz_57 - O.trdo_57-t.tr+t.ot, 2) AS Ost,
SUBSTRING(O.N_POD, 1, 3) + '.' + SUBSTRING(O.N_POD, 4, 2) + '.' + SUBSTRING(O.N_POD, 6, 2)+ '.' + SUBSTRING(O.N_POD, 8, 1) + '.' + SUBSTRING(O.N_POD, 9, 2) + '.' + SUBSTRING(O.N_POD, 11, 3) AS Mpod,
O.*
FROM tblOrder O
LEFT OUTER JOIN Zak Z ON O.N_zak = Z.N_zak
LEFT OUTER JOIN @t1 T on kod=o.kod_order
WHERE(O.N_zak =@zak) AND
(O.Isp =@cex) AND
(O.Data_PDO IS NOT NULL) AND
(O.Tip_POD <> 16) AND
(Z.priz_annul = N'0') AND
(Z.priz_close = N'0')
order by mpod
end
ох че тут происходит объясни логику sql запроса