2011-08-30 50 views
3

我有以下内容可返回给定类型作业的总开票金额。我现在想把它分解成月总数。我应该如何处理这个月份报告中的月份中的SQL SUM()

SELECT  dbo.jm_job_type.job_type_desc, SUM(dbo.jm_invoice.invoice_amount) AS 'inv tot' 
FROM   dbo.jm_invoice INNER JOIN 
        dbo.jm_job ON dbo.jm_invoice.job_no = dbo.jm_job.job_no INNER JOIN 
        dbo.jm_job_type ON dbo.jm_job.job_type_no = dbo.jm_job_type.job_type_no 
GROUP BY dbo.jm_job_type.job_type_desc 
+2

贾尔斯请查看你的过去的问题。你已经问了7个,并收到了14个回复。当然有一些是可以接受的。 –

+0

更正 - 谢谢保罗 – giles

回答

1

“落地” 的月份(最有效的方式来获得一个月+仅一年),然后GROUP BY是”

GROUP BY DATEADD(月,DATEDIFF(MO第n,0,dbo.jm_invoice.YourDate),0)

所以这将是:

SELECT  dbo.jm_job_type.job_type_desc, 
      DATEADD(month,DATEDIFF(month,0, dbo.jm_invoice.YourDate),0) AS MonthYear, 
      SUM(dbo.jm_invoice.invoice_amount) AS 'inv tot' 
FROM   dbo.jm_invoice INNER JOIN 
        dbo.jm_job ON dbo.jm_invoice.job_no = dbo.jm_job.job_no INNER JOIN 
        dbo.jm_job_type ON dbo.jm_job.job_type_no = dbo.jm_job_type.job_type_no 
GROUP BY dbo.jm_job_type.job_type_desc, 
     DATEADD(month,DATEDIFF(month,0, dbo.jm_invoice.YourDate),0) 
0

的年份和月份字段添加到您的SELECT列表中,并把它添加到您的GROUP BY列表中的所有提示

1

使用有问题的日期在SQL Server DATEPART函数在您的集团通过这样的:

GROUP BY 
    DatePart(yy, dbo.jm_invoice.some_date), 
    DatePart(mm, dbo.jm_invoice.some_date), 
    dbo.jm_job_type.job_type_desc