다른 곳에서 값들을 뽑아 와서 union all 로 전체 값을 뽑으려고 합니다.
그런데
각각의 쿼리를 하면 이상이 없는 데 union all 로 결과값을 묶어서 뽑으려고 하면
"varchar을(를) numeric(으)로 변환하는 중 오류가 발생했습니다. "
오류가 발생을 합니다.
Select so_code , sales , cost, convert(Numeric,mSales) as sum_sales , convert(Numeric,mSales - convert(Numeric,mCost) as SProfit from 테이블1
union all
Select so_code , max(sales) as sales , max(cost) as cost, sum( convert(Numeric,taxmoney) ) as sum_sales , sum( ( convert(Numeric,taxmoney)) * Profit) as SProfit from 테이블2 group by so_code, taxdate
이런 식으로 쿼리가 되어져 있는데요..
Select so_code , sales , cost, convert(Numeric,mSales) as sum_sales , convert(Numeric,mSales - convert(Numeric,mCost) as SProfit from 테이블1 만 실행시켜도 결과값이 나오고...
Select so_code , max(sales) as sales , max(cost) as cost, sum( convert(Numeric,taxmoney) ) as sum_sales , sum( ( convert(Numeric,taxmoney)) * Profit) as SProfit from 테이블2 group by so_code, taxdate
를 실행시켜도 결과값이 나오는데...
Select so_code , sales , cost, convert(Numeric,mSales) as sum_sales , convert(Numeric,mSales - convert(Numeric,mCost) as SProfit from 테이블1
union all
Select so_code , max(sales) as sales , max(cost) as cost, sum( convert(Numeric,taxmoney) ) as sum_sales , sum( ( convert(Numeric,taxmoney)) * Profit) as SProfit from 테이블2 group by so_code, taxdate
이렇게 하면 "varchar을(를) numeric(으)로 변환하는 중 오류가 발생했습니다. " 이런 오류가 나옵니다.
그래서 하나씩 빼면서 봤는데.. SProfit 부분이 문제가 있는거 같은데.. 어떻게 수정을 해야 할까요?
CAST(convert(Numeric,( mSales - mCost )) as Numeric ) as SProfit 이렇게도 해보고 했는데... 안되네요.
* 첫번째 쿼리 결과
SO-1 | 16200000 | 13320000 | 1442136 | 25637.9822 |
* 두번째 쿼리 결과
SO-3 | 252727273 | 225265636 | 1471818 | 159929.442 |
SO-4 | 2445000 | 2368800 | 2445000 | 76200 |
SO-5 | 653600000 | 560856890 | 653600000 | 92743110 |
SO-6 | 763000 | 739200 | 763000 | 23800 |
각각은 나오는데..
이걸 union all 을 하면 오류가 납니다. 결과를 가지고 보면 가장 마지막 데이터인 SProfit 을 쿼리에서 빼고 실행을 시키면 결과값이 나오니,
SProfit 의 형 문제인건 같은데..
아무리 해도 안되네요.
Comment 1
-
짱나부러
2015.05.06 10:49
SProfit 부분
convert(Numeric,mSales - convert(Numeric,mCost)
-> 닫는 가로가 빠진듯 하구요...
단순히
declare @aa varchar(100)
declare @bb varchar(100)
set @aa = '111'
set @bb = '222'
select convert(Numeric,@aa - convert(Numeric,@bb))
해보면 잘 됩니다... 혹시 다른 부분이??