2014-01-13 2 views
0

인시던트에 대한 보고서를 실행하려고합니다. 이 코드는 제대로 표시됩니다. 그러나 가장 먼저 발생한 인시던트를 보여주는 보고서를 얻고 싶습니다. 에 의해 주문을 추가하지 않습니다. 또한 그룹 수를 계산하여 사건의 양을 계산합니다. 따라서 백분율을 얻을 수 있습니다. 그러나 디스플레이에는 사고 코드가 순서대로 표시되지만 실제로 발생한 사건의 순서는 표시되지 않습니다. 나는 손실의 비트에있어 - ... CF9 및 액세스를 사용하여 ... GOOG 또는 여기에서 해결책을 찾기 위해이 같은CFOUTPUT 그룹 표시 - 그룹화 번호 - 가장 먼저

표시 ...

전화 유형 전화 번호

을 보일 수 없다

달러 손실 화재 2
의료 CoResponse 11
자동차 사고 6
쓰레기 또는 잔디 화재 1
가스 누출 - 천연 가스 5
알람 - 아니 화재 - 카탈로그 알람 1
알람 - 아니 화재 - CO 경보 4
불만 조사 2

내가 가장 먼저 표시하고 다음과 같이 감소하고 싶습니다

...

의료 CoResponse 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

이것은 완벽하지는 않지만 올바르게 진행될 것입니다. 쿼리를 하나의 쿼리로 작성한 다음 집계 합계를 사용하여 결과를 출력 할 수 있어야합니다.

<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> 
+0

죄송합니다 - 인정합니다 - ... 내가 일을 해독하기 위해 노력하고 모든 것을 ... 이벤트로 잃은 작은 마스터에없는 ... –

+0

쿼리는 마스터 및 사건 코드에서 당겨 행을 기반으로 일치하는 사건 코드에 –

+0

작동하지 않습니다 - code.event가 master가 아닌 다른 테이블에 있습니다. 마스터 테이블에는 인시던트 코드 번호가 있으며, 인시던트 코드 테이블에는 이벤트 설명자가있는 반면 당겨서 계산할 수 있습니다 (원하는대로 표시 할 수 없음). 코드 쿼리는 코드의 텍스트를 표시하기 만하면 인시던트 코드의 텍스트를 가져 오기만합니다. 즉, 조인/통합되지 않아도됩니다. –