안녕하세요.. sybase DB를 사용하고 있는데.. 이상해서요.
아래와 같이 만들고 temp Table 만들어서 쿼리한값 집어넣고 그 Temp 테이블 조회하는 스크립트입니다.
Select 절
union all
select 절 구분입니다. 일단 요 union all 결과는 모두 맞게 나옵니다.
itemc_cd / tot_amt / year02
결과값 1 row => 1118 , 0 , 0
2 row => 1118 , 0 , 0
요렇게 나옵니다.
헌데 이걸 Insert Into #Test_temp 하면 year_02의 값이 엉뚱하게 나옵니다.
1 row => 1118, 0, -4580.7098286534
도대체 왜 -4580.7098286534 란 값이 나오는지 종잡을 수가 없어여.. 그것도 insert 하면 말입니다.
고수님들 부탁 좀 드릴께요.. 며칠동안 골치앓고 있습니다.
혹시 버젼에 따라 못쓸수도 있나요?
DROP TABLE #Test_temp
Create Table #Test_temp
(
item_cd char(04) null,
tot_amt decimal(25,10) null,
year_02 decimal(15,11)null
)
Insert Into #Test_temp --> 이부분에서 값이 이상하게 나옴.
Select z.a01,
Round(Sum(z.a02) * 0.2209119813,10),
Round(Sum(z.a04) * 0.2209119813,10) -> 이부분을 Round(Sum(1) * 0.2209119813,10) 을 해봐도 0.2209119813이 아닌 전혀다른 Data가 나옵니다.
From (
Select '1118' a01,
0 a02,
round(isnull(Sum(Case when year = convert(varchar,2003 + 1) then ctr_amt else 0 end),0) / 1000,10) a04
From u_a_d a,
u_a_act c
where exists ( select 1
from #temp_123 b
Where a.jigu_no = jigu_no
and a.cnt = cnt
and a.an_no = an_no)
And a.gbn = '4' -- 선급
And a.jigu_no = c.jigu_no
And a.cnt = c.cnt
And a.an_no = c.an_no
And a.gbn = c.gbn
And a.acnt_cd = c.acnt_cd
Union ALL
Select '1118' a01,
0 a02,
round(isnull(Sum(Case when year = convert(varchar,2003 +1) then -1 * ctr_amt else 0 end),0) / 00,10) a04
From u_a_d a,
u_a_act c
where exists ( select 1
from #temp_123 b
Where a.jigu_no = jigu_no
and a.cnt = cnt
and a.an_no = an_no)
And a.gbn = '2'
And a.jigu_no = c.jigu_no
And a.cnt = c.cnt
And a.an_no = c.an_no
And a.gbn = c.gbn
And a.acnt_cd = c.acnt_cd ) z
Group By z.a01
SELECT * FROM #Test_temp
DELETE FROM #Test_temp