두 개의 쿼리를 작성했습니다.oracle plsql 함수에 매개 변수 전달
질의 1 :
select stock_id from_id,
nvl(lead(stock_id, 1, null) over (order by stock_date),stock_id) to_id
from STOCK
where stock_time not like 'NEW_STOCK';
위의 쿼리 반환
는 아래와 같이 결과 : :FROM_ID TO_ID
331 341
341 351
351 361
361 371
371 391
391 401
401 421
421 441
441 451
451 461
461 321
321 323
323 491
491 501
501 501
내 두 번째 쿼리는 다음과 같은
select max(m.material_thikness) ||
' mm' || ' | ' ||
m.material_guage ||
' g' guage,
sum(util.find_usage_from_stock(MATERIAL_THIKNESS,P_FROM_ID,P_TO_ID)) -
sum(util.find_sheets_sold(MATERIAL_THIKNESS,P_FROM_ID,P_TO_ID)) diff
from material m
where m.active like 'Y'
group by m.material_guage
order by m.material_guage;
위의 쿼리 결과를 반환이다
GUAGE DIFF
6 mm | 11 g 0
4 mm | 12 g -0.32
3 mm | 13 g 0.51
2 mm | 14 g 0.85
1.5 mm | 16 g -0.41
1.2 mm | 18 g 0.35
1 mm | 19 g 1.67
.8 mm | 20 g 0
두 번째 쿼리에서 첫 번째 쿼리의 첫 번째 쿼리에서 FROM_ID
및 TO_ID
반환을 추가해야하고 두 번째 쿼리를 수정해야 아래와 같은 결과를 얻을 수 있습니다.
RANGE DIFF
331-341 0
341-351 0.35
351-361 0.45
.......
441-451 1.25
451-461 -0.75
461-321 1.67
어떻게하면됩니까? 그것을 할
select max(m.material_thikness) ||
' mm' || ' | ' ||
m.material_guage ||
' g' guage,
sum(util.find_usage_from_stock(MATERIAL_THIKNESS,P_FROM_ID,P_TO_ID)) -
sum(util.find_sheets_sold(MATERIAL_THIKNESS,P_FROM_ID,P_TO_ID)) diff
from material m
where m.active like 'Y'
and (m.p_from_id,m.p_to_id) in(select stock_id from_id,
nvl(lead(stock_id, 1, null)
over (order by stock_date),stock_id) to_id
from STOCK
where stock_time not like 'NEW_STOCK')
group by m.material_guage
order by m.material_guage;
윌 :
모든 MATERIAL_THIKNESS는의 모든 쌍 실행해야합니까? –