2016-04-28 18 views
0
ID Name  Age Salary running_total Percentage 
1 Abe  61  140000 140000    0 
2 Bob  34  44000 184000    0 
5 Chris 34  40000 224000    0 
7 Dan  41  52000 276000    0 
8 Ken  57  115000 391000    0 
11 Joe  38  NULL 391000    NULL 

私は(給与/ TotalSalary)として給与の割合の列が欲しい* 100計算割合

私は乗算演算を適用することさえできません。クエリは、部門は、常にあなたが100.0を掛けない限り、あなたがそれらを参照してくださいwouldnot 1未満につながるので100

Incorrect syntax near the keyword 'Over'. 
+0

'順番はrunning_totalに合うように()あなたを切り替える – Arulkumar

+0

オーバー'オーバー() '' [給与] /合計(給与)() '内逃しましたIdによって) –

答えて

1

によって乗算を適用する上でエラーが発生します。また、​​3210を使用してnull値を処理する必要があります。 (オーダーオーバー - Id`によって

Select [ID] 
     ,[Name] 
     ,[Age] 
     ,[Salary], Sum(coalesce(Salary,0)) Over(order by Id) As running_total, 
     100.0*coalesce([Salary],0)/Sum(coalesce(Salary,0)) Over() as Percentage 
    From [Company].[dbo].[SalesPerson] 
1
Select [ID] 
     ,[Name] 
     ,[Age] 
     ,[Salary] 
     ,Sum(Salary) Over(order by Id) As running_total 
     ,CAST([Salary] as decimal(18,2)) * 100/Sum(Salary) Over() as Percentage 
    From [Company].[dbo].[SalesPerson]