SQL Server 2008 R2 / SUM成本中心成本

时间:2017-02-06 08:04:25

标签: sql sql-server sql-server-2008 tsql

我有:

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" -error,而没有NVARCHAR作为字段!小时和费用是FLOAT。所有其他都是INT。

我得到一个错误(我的工作室是用英语安装的,但是错误消息是德语)"在数据透视操作员中,值是错误的"。

请给我一些提示; - )

THX。

格尔茨 贝吉塔

1 个答案:

答案 0 :(得分:3)

为什么不:

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

我看到你需要在小时数上加总,所以有两个SUM。