如何在asp.net图表中获得每月比较显示

时间:2015-03-18 05:51:27

标签: sql-server group-by

在我的表格中,我有一个列名Transdate,其中包含格式为dd-mm-yyyy的交易日期。我正在使用图表来明智地显示交易月份, 我使用了查询。

SELECT 
    [p].Transdate AS [Month/Year] ,
    Sum([p].Litres) [Total Sale]
FROM CustomerPoints AS [p] 
INNER JOIN Customers AS [c] 
    ON [c].[CustomerID]=[p].[CustomerID] 
WHERE 
    [p].Transdate BETWEEN '2013-01-20' AND '2015-03-05'
    AND [c].DistributorID = '1'
GROUP BY [p].Transdate 
ORDER BY [p].Transdate ASC 

以上查询以日期形式提供数据

Month/Year         Total Sale      
1-02-2012          500
2-02-2012          500

我想要

Month/Year          Total Sale
02-2012              1000

即我希望查询计算月份(总销售额)明智而不是日期。

3 个答案:

答案 0 :(得分:1)

尝试SQL Datepart()/ Month()/ Year()

SELECT 
   CAST((MONTH([p].Transdate)+'-'+YEAR([p].Transdate)) as VARCHAR(50)) AS [Month/Year],
   SUM([p].Litres) [Total Sale] 
FROM CustomerPoints as [p] 
INNER JOIN Customers as [c]
           ON [c].[CustomerID]=[p].[CustomerID] 
WHERE [p].Transdate BETWEEN '2013-01-20' AND '2015-03-05' 
AND [c].DistributorID='1' 
GROUP BY CAST((MONTH([p].Transdate)+'-'+YEAR([p].Transdate)) as VARCHAR(50))
ORDER BY [p].Transdate ASC 

或者

SELECT 
    CAST(CAST((DATEPART(MONTH,[p].Transdate))as VARCHAR(50))
+'-'+CAST((DATEPART(YEAR,[p].Transdate))as VARCHAR(50))) AS [Month/Year], 
    SUM([p].Litres) [Total Sale]
FROM CustomerPoints as [p] 
INNER JOIN Customers as [c]
           ON [c].[CustomerID]=[p].[CustomerID] 
WHERE [p].Transdate BETWEEN '2013-01-20' AND '2015-03-05' 
AND [c].DistributorID='1'
GROUP BY CAST(CAST((DATEPART(MONTH,[p].Transdate))as VARCHAR(50))
+'-'+CAST((DATEPART(YEAR,[p].Transdate))as VARCHAR(50))) 
ORDER BY [p].Transdate ASC 

答案 1 :(得分:0)

试试这个..

SELECT 
   CAST((MONTH([p].Transdate)+'-'+YEAR([p].Transdate)) as VARCHAR(50)) AS [Month/Year],
   SUM([p].Litres) [Total Sale] 
FROM CustomerPoints as [p] 
INNER JOIN Customers as [c]
           ON [c].[CustomerID]=[p].[CustomerID] 
WHERE [p].Transdate BETWEEN '2013-01-20' AND '2015-03-05' 
AND [c].DistributorID='1' 
GROUP BY CAST((MONTH([p].Transdate)+'-'+YEAR([p].Transdate)) as VARCHAR(50))
ORDER BY [p].Transdate ASC 

答案 2 :(得分:0)

SELECT 
Cast((Datepart(Month,[p].Transdate)) as varchar(50))
+'-'+ Cast((Datepart(Year,[p].Transdate))as varchar(50)) AS [Month/Year]
,Sum([p].Litres) [Total Sale]
FROM CustomerPoints as [p] 
Inner Join Customers as [c]
on [c].[CustomerID]=[p].[CustomerID] 
where [p].Transdate between '2013-01-20' AND '2015-03-05' 
AND [c].DistributorID='1'
GROUP BY Cast((Datepart(Month,[p].Transdate)) as varchar(50)) + '-'+ Cast((Datepart(Year,[p].Transdate))as varchar(50))
ORDER BY Cast((Datepart(Month,[p].Transdate)) as varchar(50)) + '-'+ Cast((Datepart(Year,[p].Transdate))as varchar(50)) ASC