我正在想出一個統一的方式來計算單個表中兩列之間的百分比差異。 有時num1爲零,在這種情況下,計算的差值應爲100%。 有時num2爲零,在這種情況下,計算的差異應該是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語句如下所示。
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。 第五行是OK。 第六行從不顯示,因爲它會生成除零錯誤。
我希望我的結果集看起來像這樣:
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 2012-03-30 02:09:35
每個插入旁邊的註釋顯示了每行的內容以及我希望顯示的內容。有更好的方式來表達嗎? – Snowy 2012-03-30 02:13:18
您是否注意到您將'num2'聲明爲'int',然後嘗試插入'161.5'? – 2012-03-30 02:33:54