2017-05-25 55 views
0

我與SSMS工作2014年如何獲得CAST與部門正常工作

我的示例代碼如下:

select name 
     ,family 
     ,group 
     ,mcount 
     ,icount 
     ,(cast(icount as demical(10,2))/cast(mcount as decimal(10,2))) as per_unit 
from (select distinct 
      mc.name 
      ,mc.family 
      ,mc.group 
      ,sum(mc.mcount) over (partition by mc.name) as mcount 
      ,sum(ic.icount) over (partition by ic.name) as icount 
     from mc 
     join ic 
     on ic.num1 = mc.num1) as a 
order by mcount desc 

我的單位列的第一個記錄是應該除以76/50.這應該= 1.52,但是,它返回1.5200000000000。第二個記錄分爲52/28並返回1.8571428571428。

我在找2位小數。我閱讀鑄造十進制(10,2),但這似乎不工作。

我在做什麼錯? 謝謝

+0

不合理的拼寫錯誤... – Jeremy

+0

當y你可以選擇76和50--他們兩個都沒有小數位。但結果是它。爲什麼你認爲結果會有與參數一樣數量的小數? – xdd

+1

你知道...我問,因爲我不知道。我想在這裏很有禮貌。但如果你要問我這個問題,我顯然沒有答案...因爲我問了上述問題。不要發佈任何內容。如果你有什麼東西可以像下面那些想要幫助的人一樣做出貢獻,通過一切手段去做......否則......不要發佈,因爲你沒有幫助任何人。 – Fredderf81

回答

0

您的部門更改爲:

cast((cast(icount as demical(10,2))/cast(mcount as decimal(10,2))) as decimal(10,2)) as per_unit 

或理想情況下,假設你icountmcountdecimal值:

cast(icount/mcount as decimal(10,2)) as per_unit 
+0

謝謝!這工作完美!我有不到15個代表,所以我不能投票。但這正是我所需要的(最上面的例子)。 – Fredderf81

+0

@RyanOtto如果這是你的問題的正確答案,爲了其他SO用戶的利益,請接受它作爲答案。這與upvoting不同。 – iamdave

+0

對不起!!!我總是忘記那樣做 – Fredderf81

1

你必須施放部門的結果。

更改此

(cast(icount as demical(10,2))/cast(mcount as decimal(10,2))) as per_unit 

這個

cast(icount/mcount as decimal(10,2)) as per_unit 

如果icount & mcount是INT保持現有的轉換。

+0

謝謝你的回答 - 這給了我1.00和2.00而不是1.52,但它是在正確的道路上 - 我想我可以用它來做其他事情!所以這絕對有幫助 - 我也沒有指出列格式......我應該這樣做!感謝您的幫助! – Fredderf81

0

一個多投會給期望的結果

cast((cast(icount as demical(10,2))/cast(mcount as decimal(10,2))) as Decimal(10,2)) per_unit 
+0

謝謝你的幫助!這也是類似於上面的最佳答案,完美的作品!再次,因爲我有更少的代表15代表我不能upvote,但這工作正是我需要的! – Fredderf81

相關問題