2014-01-13 2 views
0

Я пытаюсь запустить отчет об инцидентах. Этот код отлично работает, чтобы отобразить его. Но я хотел бы, чтобы в отчете отображалось большинство инцидентов, которые сначала спускались. Добавление заказа не выполняется. Я также подсчитываю количество инцидентов, выполняя групповой подсчет. И, таким образом, можно получить процент. Но на дисплее отображается код инцидента по порядку - но не фактическое количество инцидентов в порядке. Я на немного потери - не могу найти решение на Goog или здесь ... Использование CF9 и доступа ...Отображение группы CFOUTPUT - группирование номеров - большинство из первых

Показывает, как это ...

Тип вызова номера вызова

доллар Loss Пожар 2
Медицинская CoResponse 11
Vehicle Accident 6
Мусор или травы Пожар 1
утечки газа - природный газ 5
Alarm - Нет Fire - Каталог Alarm 1
Alarm - Нет Fire - CO Alarm 4
Жалоба Исследование 2

Я хотел бы, чтобы отобразить самый первый, а затем уменьшить, как это ...

Медицинская CoResponse 11 Vehicle Accident 6
Газ Leak - Природный газ 5
Alarm - Нет Fire - CO Alarm 4
доллар Loss Пожар 2
Жалоба Исследование 2
Мусор или Grass Огонь 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 находится в другой таблице, чем мастер. Мастер-таблица содержит идентификационный код кода инцидента, который я могу вытащить и подсчитать (просто не могу отобразить по желанию), в то время как таблица кодов инцидентов несет дескриптор события. Запрос кода только вытягивает текст того, что является кодом инцидента, и его не нужно связывать/объединять, поскольку он просто отображает текст кода. –

Смежные вопросы