显示CFOUTPUT组 - 分组编号 - 最先

时间:2014-01-13 23:36:00

标签: sql ms-access coldfusion coldfusion-9

我正在尝试运行有关事件的报告。此代码可以正常显示它。但是我希望报告显示最多的事件首先下降。添加订单不会这样做。我也通过进行小组计数来计算事件数量。从而能够获得百分比。但显示屏按顺序显示事件代码 - 但不是按顺序显示实际事件数量。我有点失落 - 似乎无法在Goog或这里找到解决方案......使用CF9和Access ...

显示如下......

通话类型呼叫号码

美元损失火灾2 医疗CoResponse 11
车辆事故6
垃圾或草火1
气体泄漏 - 天然气5
报警 - 无火灾 - 目录报警1
报警 - 无火灾 - CO报警4
投诉调查2

我希望它显示最先显示,然后像这样减少...

医疗响应11 车辆事故6
气体泄漏 - 天然气5
报警 - 无火灾 - CO报警4
美元损失火灾2 投诉调查2
垃圾或草火1
报警 - 无火灾 - 目录报警1

    <cfquery name="calls" datasource="report">
select * from master
where eventdate like '%#yydate#%'
order by incidentcode
</cfquery>

<cfoutput>
<b>#yydate# #calls.recordcount# Calls</b><br><br>
</cfoutput>

<table cellpadding=8 cellspacing=0 border=1>
<tr bgcolor=b3b3b3>
<td align=center>Call Type</td>
<td align=center>Call Numbers</td>
<td align=center>Percent</td>
</tr>

  <cfoutput query=calls group="incidentcode">
  <cfset groupCount = 0>
  <cfoutput>
  <cfset groupCount = groupCount + 1>
  </cfoutput>
  <cfquery name="code" datasource="report">
  select * from incidentcode
  where id = #incidentcode#
  </cfquery>
<tr>
<td align=center>#code.event#</td>
<td align=center>#groupcount#</td>
<td align=center>
<cfset perc = (#groupcount# / #calls.recordcount#) * 100>
#numberformat(Perc, "_._")# %
</td>
</tr>  
  </cfoutput>

1 个答案:

答案 0 :(得分:1)

这还不完整,但希望能让你走上正轨。您应该能够将查询编写为一个查询,然后使用聚合总计以这种方式输出。

<cfquery name="calls">
SELECT m.incidentcode ic, ic.event event, SUM(m.incdentcode) total
FROM master m
  INNER JOIN incidentcode ic ON m.incidentcode = ic.id
where eventdate like '%#yydate#%'
group by m.incidentcode, event
order by ic
</cfquery>

<cfoutput query="calls">
  <tr>
    <td>#code.event#</td>
    <td>#code.total#</td>
  </tr>
</cfoutput>

首选方法是创建一个查询,但是与原始语法保持一致,这也应该有效。您可能需要仔细检查sortedStruct是否正确排序。它可能首先按键名排序。

<cfset allCalls = {}>
<cfset totalCount = 0>
<cfoutput query=calls group="incidentcode">
  <cfset groupCount = 0>
  <cfoutput>
    <cfset groupCount++>
  </cfoutput>
  <cfset totalCount+=groupCount>
  <cfquery name="code" datasource="report">
  select * from incidentcode
  where id = <cfqueryparam cf_sql_type="cf_sql_varchar" value="#incidentcode#">
  </cfquery>
  <cfset allCalls[code.event] = groupcount>
</cfoutput>

<cfset sortedStruct = structSort(allCalls,'numeric','desc')><!--- returns an array ordered the way you want --->
<cfoutput>
  <cfloop array="#sortedStruct#" index="event">
    <tr>
      <td>#event#</td>
      <td>#allCalls[event]#</td>
      <td>#numberFormat(allCalls[event] / totalCount * 100,'00.00')#</td>
    </tr>
  </cfloop> 
</cfoutput>