단일 테이블의 두 열 사이의 백분율 차이를 계산하는 일관된 방법을 고안하려고합니다. 가끔 num1이 0 인 경우 계산 된 차이는 100 %이어야합니다. 가끔 num2가 0 인 경우 계산 된 차이가 100 %이어야합니다. 때때로 num1과 num2의 차이가 매우 커서 계산 된 차이는 100 %가됩니다. 여기 SQL Server 백분율 계산
테이블에서 샘플 추출물 :declare @numtable table (num1 decimal(10,3) , num2 decimal(10,3))
insert into @numtable values (160 , 161.5)
insert into @numtable values (439 , 377)
insert into @numtable values (100 , 1)
insert into @numtable values (1 , 100)
insert into @numtable values (0 , 20)
insert into @numtable values (20 , 0)
나는 다음과 같은 깨진 선택 성명을 발표했다. 이하게
select num1 , num2 , Abs(100- (100 * cast(cast(num1 as decimal(6,3))/cast(num2 as decimal(10,3)) as decimal(6,3)))) as percentdiff
from @numtable
는 :
num1 num2 percentdiff
------------ ------------ -------------
160.000 161.500 0.900
439.000 377.000 16.400
100.000 1.000 9900.000
1.000 100.000 99.000
0.000 20.000 100.000
첫 3 행은 OK입니다. 다섯 번째 행의 행이 정상입니다. 여섯 번째 행은 0으로 나누기 오류를 생성하므로 절대 표시되지 않습니다.
나는 같이하는 세트 내 결과를 원하는 :
num1 num2 percentdiff
------------ ------------ -------------
160.000 161.500 0.900
439.000 377.000 16.400
100.000 1.000 9900.000
1.000 100.000 9900.000
0.000 20.000 100.000
20.000 20.000 100.000
어떻게 내가 그것을 필요로하는 방법을 반환 무언가로 내 변경을 선택해야합니까?
감사합니다.
... 후 일부 샘플 데이터를 원하는 :
당신은 제로 경우로 분할에 여분의 비트를 할 필요가 출력 ... – Teja
각 삽입 옆에있는 주석은 각 행에 대해 발생하는 상황과 표시하려는 내용을 보여줍니다. 거기에 더 좋은 방법이 있습니까? – Snowy
'num2'를'int'로 선언 한 다음'161.5'를 삽입하려고 시도 했습니까? –