2017-02-06 3 views
1

ich habe:SQL Server 2008 R2/SUM Kosten Kosten Zentrum

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 

Ich benötige die Summe der Kosten nach Kostenstelle, etwa wie folgt:

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

Ich versuche, eine zu verwenden, 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; 

Aber es funktioniert nicht. Ich bekomme 1 "nvarchar to int" -Fehler, während es kein NVARCHAR als Feld gibt! Stunden und Kosten sind FLOAT. Alle anderen sind INT.

Und ich bekomme einen Fehler wie (mein Studio ist in Englisch installiert, aber der Fehler Msg ist Deutsch) "In Pivot-Operator ist der Wert falsch".

Bitte geben Sie mir einige Hinweise ;-)

THX.

Greetz Vegeta

Antwort

3

Warum nicht:

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

Ich sehe, dass Sie auch die Stunden summieren müssen, so gibt es zwei SUMs.

+1

Und ein anderes Mal denke ich zu kompliziert ;-) Das ist was ich brauche. DANKE :-) –