【问题标题】:Running Individuals Reports运行个人报告
【发布时间】:2015-11-05 21:11:57
【问题描述】:

我正在尝试进行查询以运行报告。我试图让它搜索一系列日期并检查用户做了多少工作。 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> 

【问题讨论】:

    标签: sql coldfusion


    【解决方案1】:

    您可以放弃 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
    

    您的查询可能还需要某种聚合,以便了解您对工作的定义。

    编辑:修改以获取打开和关闭的项目,添加过滤

    【讨论】:

    • 刚刚更新了它,为打开的项目、关闭的项目添加列和一个 AND 子句,让您提供一个 op_id 列表以供过滤
    • 是的,这不是一个真正的冷融合问题(cfqueryparams 除外),更多的是一个 sql 问题。我还做了一个很大的假设,即您使用的数据库是 sql server,但我认为该语法也适用于 mySQL
    • 您可以按任何列排序,只需在 GROUP BY 后添加 SORT BY 子句。我已经更新了答案
    • 虽然它在技术上是可选的,但您应该始终specify a cfsqltype when using cfqueryparam。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多