결과에 2 개의 레코드가 있고 오직 1 개만 필요합니다. 이것은 테스트 데이터베이스이며 잘못된 결과를 초래하는 테이블 중 하나에 불완전한 레코드가 있습니다.기준에 대한 특정 레코드 선택
PS_ASSET_NBV_TBL
에는 여러 레코드가 있습니다. 앞으로는 각 자산에 대해 하나의 레코드 만 있어야합니다. Months_In_Service
에 그룹화 중이며이 그룹화로 인해 1 대신 2 줄이 표시됩니다.
테스트 데이터베이스에서이 상황을 해결하려면 RUN_ID = 'TEST'
인 레코드 만 선택하고 싶습니다. 이 작업을 수행 할 기준을 추가했지만 (아래에 주석을 달았습니다.) 결과에 2 개의 레코드가 남아 있습니다. 내가 할 수 있을까? 내 코드의 올바른 위치에이 코드가 있습니까? PS_ASSET_NBV_TBL
A0056 000000000003 PERFORM 0 E520GM 2 150300
A0056 000000000003 PERFORM 0 E520GM TEST 150300
A0056 000000000003 PERFORM 0 E520GM 1 150300
SELECT
p.account,
p.business_unit,
p.deptid,
p.asset_id,
p.descr,
p.in_service_dt,
p.Months_In_Service,
p.cost,
p.accum_depr,
p.net_bk_value
FROM (SELECT pant.account,
pant.business_unit,
pant.deptid,
pant.asset_id,
pant.descr,
pa.in_service_dt,
pb.life - pb.life_remaining as Months_In_Service,
pant.cost,
pant.accum_depr,
pant.net_bk_value
FROM
ps_asset_nbv_tbl pant
inner join ps_asset pa on pa.ASSET_ID = pant.asset_id and pa.business_unit = pant.business_unit
inner join ps_book pb on pb.ASSET_ID = pant.asset_id and pb.business_unit = pant.business_unit
WHERE
pant.business_unit = 'A0056'
and pant.book = 'PERFORM'
and pa.asset_status ='D'
and pant.run_id = 'TEST' (-- only added because of the test data)
GROUP BY
pant.account,
pant.business_unit,
pant.deptid,
pant.asset_id,
pant.descr,
pa.in_service_dt,
pb.life,
pb.life_remaining,
pant.cost,
pant.accum_depr,
pant.net_bk_value,
pant.run_id
) p
GROUP BY
p.account,
p.business_unit,
p.deptid,
p.asset_id,
p.descr,
p.in_service_dt,
p.Months_In_Service,
p.cost,
p.accum_depr,
p.net_bk_value
는
150300 A0056 000000000003 Test 01-JAN-14 3 10000 333.34 9666.66
150300 A0056 000000000003 Test 01-JAN-14 4 10000 333.34 9666.66
우리가 알아야 할 것이 있습니까? 샘플 입력 또는 결과 데이터를 표시하지 않습니다. – OldProgrammer
행 제한을 사용하지 않는 이유는 무엇입니까? –
문제점을 일으키는 테이블과 현재 얻는 결과를 추가했습니다. 도움을 주셔서 감사합니다 – Shaves