2017-02-06 91 views
1

我:的SQL Server 2008 R2/SUM成本

ReNr |Hours|Costs|Cost Center|Change 
12345 |1 |122,5|4711  |A 
12345 |2 |245 |4711  |B 
12345 |1 |122,5|4712  |C 
12345 |1 |122,5|4712  |D 
12345 |2 |245 |4712  |E 

我按成本中心需要的費用的總和,是這樣的:

ReNr  |Hours|Costs|Cost Center 
12345 |3 |367,5|4711   
12345 |4 |490 |4712 

我嘗試使用PIVOT:

SELECT [ReNr] 
     ,ISNULL([Hours], 0) AS [Hours] 
     ,ISNULL([Cst2501], 0) AS [Cst2501] 
     ,ISNULL([Cst2510], 0) AS [Cst2510] 
     ,ISNULL([Cst2705], 0) AS [Cst2705] 
     ,ISNULL([Cst5010], 0) AS [Cst5010] 
     ,ISNULL([Cst7080], 0) AS [Cst7080] 
     ,ISNULL([Cst7120], 0) AS [Cst7120] 
     ,ISNULL([Cst7301], 0) AS [Cst7301] 
FROM 
(
    SELECT [ReNr] 
      ,[Hours] 
      ,[Costs] 
      ,[CostCenter] 
    FROM [dbo].[Abrechnungen] 
) src 
PIVOT 
(
    SUM([Costs]) 
    FOR [CostCenter] IN ([Cst2501], [Cst2510], [Cst2705], [Cst5010], [Cst7080], [Cst7120], [Cst7301]) 
) piv; 

但它不起作用。我得到1「nvarchar int」 - 錯誤,而沒有NVARCHAR作爲領域!小時和費用是FLOAT。其他都是INT。

而且我得到一個錯誤,例如(我的Studio安裝了英文,但錯誤消息是德語)「在數據透視操作符中,該值是錯誤的」。

請給我一些提示;-)

THX。

格爾茨 貝吉塔

回答

3

爲什麼不:

SELECT ReNr, sum(Hours), sum(Costs), 'Cost Center' 
FROM TABLE 
GROUP BY 'Cost Center' 

我看你需要總結過小時爲好,這樣有兩個款項。

+1

另一次,我想複雜;-)這就是我所需要的。謝謝 :-) –