2012-12-14 101 views
1

行中我有一到十二个月的时间。计算所有12个月的GrandTotal

我有三栏:Year,Month和查询总数。

我想在底部添加一行来计算总计查询:

SELECT 
YEAR(date) AS [Year], 
MONTH(date) AS [Month], 
COUNT(*) 
from EnquiryMaster 
Group By YEAR(date), MONTH(date) 

回答

2

你或许应该,而显示在用户界面层的总数,但如果你真的想从SQL做到这一点服务器,你可以尝试像

SELECT YEAR(date) AS [Year], 
     MONTH(date) AS [Month], 
     COUNT(*) 
from EnquiryMaster 
Group By YEAR(date), 
      MONTH(date) 
UNION ALL 
SELECT YEAR(date) AS [Year], 
     NULL, 
     COUNT(*) 
from EnquiryMaster 
Group By YEAR(date) 

而且,也许看看Summarizing Data Using ROLLUP

+2

+1做总计UI层 –

-1
 SELECT YEAR(date) AS [Year], 
      MONTH(date) AS [Month], 
      COUNT(*) 
    from EnquiryMaster 
    Group By YEAR(date), MONTH(date) 

在此查询中,您将获得特定年份的每个月的12条记录,因为您正在执行GROUP BY年和月,如果您只想要一年的一条记录,则必须从查询中删除MONTH(日期)。

查询会是这样: -

 SELECT YEAR(date) AS [Year], 
      MONTH(date) AS [Month], 
      COUNT(*) 
    from EnquiryMaster 
    Group By YEAR 
+0

这个查询将给予2个原因的错误:1,无效的列名年2列是无效的选择列表,因为它不包含在聚合函数或GROUP BY子句中。 – Raj

+0

对不起,我没有看到你在SQL Server中运行这个查询,这个查询只能在MySQL数据库中工作 – Sharad

3

尝试 “WITH ROLLUP” SQL的设施。

SELECT YEAR(date), 
MONTH(date), 
count(*) as data_nums 
FROM EnquiryMaster 
GROUP BY YEAR(date),MONTH(date) WITH ROLLUP 

希望这将有助于你