我有:
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。
格尔茨 贝吉塔
答案 0 :(得分:3)
为什么不:
SELECT ReNr, sum(Hours), sum(Costs), 'Cost Center'
FROM TABLE
GROUP BY 'Cost Center'
我看到你需要在小时数上加总,所以有两个SUM。