特定输出的SQL构造。一个查询可以给我这个

时间:2015-08-19 06:02:50

标签: sql sql-server-2008 tsql

下午。我正在使用SQLServer 2008r2,我有这个SQL:

SELECT dateName(mm,wfi.created) AS theMonth
, datePart(yyyy,wfi.created) AS theYear
, count(wf.WebFormsIndexID) AS numOfForms
FROM WebFormsInstances as wfi
LEFT OUTER JOIN WebFormsIndex as wf on wfi.webFormsIndexID = wf.WebFormsIndexID
where  year(wfi.created) = year(getDate())
group by datePart(yyyy,wfi.created), datePart(mm,wfi.created), dateName(mm,wfi.created)
order by theYear,datePart(mm,wfi.created)

给出了本月提交的所有表格的总数:

January     2015    799
February    2015    1282
March       2015    1450
...

大约有50种不同形式。表单名称是wf.formName如何对其进行重组,以便我可以获得每个月的每个表单的总数。类似的东西:

myFormName1    January    2015    220
myFormName2    January    2015    179

我可以弄清楚如何在两个查询中执行此操作但理想情况下喜欢在一个查询中执行此操作?目标是报告,页面上的表单名称,页面上的月份,每个月的表单总数。

1 个答案:

答案 0 :(得分:0)

SELECT
    wf.formName 
    dateName(mm,wfi.created) AS theMonth, 
    datePart(yyyy,wfi.created) AS theYear, 
    count(wf.WebFormsIndexID) AS numOfForms
FROM WebFormsInstances as wfi
LEFT OUTER JOIN WebFormsIndex as wf on wfi.webFormsIndexID = wf.WebFormsIndexID
where  year(wfi.created) = year(getDate())
group by wf.formName, datePart(yyyy,wfi.created), datePart(mm,wfi.created)
order by wf.formName, datePart(yyyy,wfi.created), datePart(mm,wfi.created)