如何每月转动并获得总金额

时间:2015-04-17 13:40:32

标签: sql-server pivot

我有以下数据: 我的桌子 enter image description here

我的最终结果应该是这样的:

enter image description here

我的SQL声明:

    SELECT 'Q'+cast([Month_Quarter] as varchar) Month_Quarter,COALESCE([Zugänge],0) Zugänge,COALESCE([Abgänge],0) Abgänge
FROM
(
  SELECT DATEPART(QUARTER,[Monat]) [Month_Quarter],
       [Zu-, Abgang],
      Count(DISTINCT [Projektdefinition DB]) NoProjects

FROM AbZugänge 
GROUP BY DATEPART(QUARTER,[Monat]), [Zu-, Abgang]

) proj
 PIVOT (SUM(NoProjects) FOR [Zu-, Abgang] IN (Zugänge, Abgänge)) As pvt
  WHERE [Month_Quarter] is not null 
  ORDER BY Month_Quarter 

但是这个陈述我得到的结果没有Amount栏目Zugang和Abgang专栏:

enter image description here

如何编辑语句以获取聚合金额列?

2 个答案:

答案 0 :(得分:1)

我想您可以将查询包装在另一个select语句中,然后使用GROUP BY。像这样:

SELECT Month, SUM(ISNULL(column_name,0))
FROM (Your Query in here)
GROUP BY Month

答案 1 :(得分:0)

我不确定我是否理解原始查询中PIVOT的要点。这看起来像是一个典型的聚合所需要的一切。看看这是否是你需要的。

SELECT DATENAME(MONTH,Monat) [Month]
    , sum(case when [Zu-, Abgang] = 'Zugänge' then [Zu-, Abgang] else 0 end) as Zugänge
    , SUM(case when [Zu-, Abgang] = 'Abgänge' then [Zu-, Abgang] else 0 end) as Abgänge
    , SUM([GWU aktuell]) as [GWU Total]
    , SUM([GWU Planung aktuell]) AS [Plan Total]
    , COUNT(DISTINCT [Projektdefinition DB]) NoProjects
FROM AbZugänge 
group by DATENAME(MONTH,Monat)