2015-11-05 71 views
-2

我想查询运行报告。我试图让它搜索日期范围并检查用户完成了多少工作。 Closed_by是显示用户数字意味着他们完成了作品的字段,而op_id表示他们提交了作品。有什么方法可以让我明白每个人的成就?运行个人报告

<cftry> 

<cfquery name="received" datasource="dns"> 
     Select * 
     FROM dbo.Dealer_Track_Work 
     WHERE Date_Received between <cfqueryparam value="10/13/2015" /> 
     AND <cfqueryparam value="10/26/2015" /> 
     WHERE Closed_by <cfqueryparam value="192" /> 
     AND op_id <cfqueryparam value="192" /> 
</cfquery> 

<cfdump var="#received#" label="received"> 

<!---<cfquery name="users" dbtype="query"> 
     Select * 
     FROM received  
     WHERE Closed_by <cfqueryparam value="192" /> 
     AND op_id <cfqueryparam value="192" /> 
</cfquery> 

<cfdump var="#users#" label="users">---> 

<cfcatch type="any"> 
     <cfset result.error = CFCATCH.message > 
     <cfset result.detail = CFCATCH.detail > 
    </cfcatch> 
</cftry> 

回答

3

你可以抛弃你的where子句并用group by子句替换它。 你也应该列出,而不是使用select *

Select op_id 
    ,count(op_id) as itemsOpened 
    ,count(closed_by) as itemsClosed 
    FROM dbo.Dealer_Track_Work 
    WHERE Date_Received between <cfqueryparam value="10/13/2015" /> 
    AND <cfqueryparam value="10/26/2015" /> 
    AND op_id IN (<cfqueryparam value="192,229,123" list="true">) 
    GROUP BY op_id 
    ORDER BY op_id ASC 

你的查询还可能需要某种形式的聚集您的栏,你知道你的工作定义。

编辑:修改得到打开和关闭的项目,加入过滤

+0

刚刚更新其添加列的项目开业,项目关闭,AND子句,让你提供op_id名单由 – rodmunera

+0

过滤是,它不是一个真正的ColdFusion问题(cfqueryparams除外),更多的是sql问题。我还假设你使用的数据库是sql server,但我认为这个语法也适用于mySQL – rodmunera

+0

你可以按任何列进行排序,只需在GROUP BY之后添加一个SORT BY子句即可。我已经更新了答案 – rodmunera