2014-07-16 3 views
1

10 진수 (9,1)에서 10 진수 (7,4)로 캐스팅 할 때 데이터 손실이 발생할 수 있다는 오류 메시지가 표시됩니다. 이 오류는 sum(b.Column2...) 행에서 발생합니다.캐스팅 및 합계 오류

insert into @tempTable 
    select a.Column1, cast(sum(b.Column2 * c.Column3 * d.Column4) as decimal (7,4)) 
    from dbo.Table1 as a 
    join dbo.Table2 as b on specified columns 
    join dbo.Table3 as c on specified columns 
    join dbo.Table4 as d on specified columns 

나는 또한 시도 :

declare @tempColumn2 decimal(7,4); 

    select @tempColumn2 = cast(a.Column1 as decimal(7,4)) -- This gives me an unresolved error message. 

    insert into @tempTable 
    select a.Column1, sum(@tempColumn2 * c.Column3 * d.Column4) 
    from dbo.Table1 as a 
    join dbo.Table2 as b on specified columns 
    join dbo.Table3 as c on specified columns 
    join dbo.Table4 as d on specified columns 

모든 팁은 감사하겠습니다

insert into @tempTable 
    select a.Column1, sum(b.Column2 * c.Column3 * d.Column4) 
    from dbo.Table1 as a 
    join dbo.Table2 as b on specified columns 
    join dbo.Table3 as c on specified columns 
    join dbo.Table4 as d on specified columns 

나는 다음과 같은 시도! 감사!

+0

왜 필요한가요 (7,4) - 이유가 있습니까? 그냥 (9,1) 또는 더 나은 아직 플로트를 사용할 수 있습니까? – JiggsJedi

+1

'Column2','Column3','Column4'의 종류는 무엇인가 궁금합니다. –

+4

그 이유는 'a.Column1' 열의 유형이 decimal (9,1) 일 것이기 때문이며 7보다 큰 정밀도를 가진 레지스트리가 있다면'7,4'라는 작은 유형으로 변환하려고합니다. 데이터 손실. –

답변

1

당신은 당신이 {-999.9999 .. 999.9999}

에 대한 답변의 범위 {-999999999.9 .. 999999999.9}을 집어 넣은 시도하기 때문에 오류 메시지지고있다 "어떻게 내가 소수 (7,4)으로 소수 (9,1)에 적합한가를?" 당신은 그렇지 않습니다.

+0

이것은 낮은 품질로 플래그되었습니다. 당신의 설명에 대해 좀 더 자세히 설명해 주시겠습니까? –

+0

@CodeMaverick OP는 파인트 글라스에 리터를 맞추는 방법을 묻습니다. 대답은 다음 중 하나입니다. 1) 그렇게하지 마십시오. 또는 2) 리터를 변경하여 더 이상 리터가 아니므로 문제를 해결하십시오. 정교화의 여지는별로 없습니다. – Anon

+0

@Anon - 방금 대기열에 왔기 때문에 아무 것도 추가 할 수 있는지 물어볼 것이라고 생각했습니다. –