2016-04-05 4 views
0

Я пытаюсь исправить свой запрос, чтобы столбец общей суммы равнялся правильному числу. Я попытался изменить эту строку <cfset columnSum = ArraySum(allLocCode['locationCount'])> на <cfset columnSum = ArraySum(trim(allLocCode['locationCount']))> Но это ошибка. Я хочу, чтобы пустая строка, как на картинке ниже, не учитывалась для всего, как это не отображается в таблице. Есть ли другой способ снять эту обрезку для моей общей колонки?CF-запрос удалить пустую строку результатов для общей суммы

<cfset result = {} /> 
<cftry> 
    <cfquery datasource="#application.dsn#" name="GetLocationInfo"> 
     SELECT * 
     FROM cl_checklists 
    </cfquery> 

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

<table border="1" id="Checklist_Stats"> 
    <thead> 
     <th><strong>Location</strong></th> 
     <th><strong>Percent of Total Checklists</strong></th> 
     <th><strong>Location Total</strong></th> 
    </thead> 
    <tbody> 
    <cfquery name="allLocCode" dbtype="query"> 
     SELECT DISTINCT trans_location, COUNT(*) AS locationCount FROM GetLocationInfo GROUP BY trans_location ORDER BY trans_location 
    </cfquery> 
    <cfloop query="allLocCode"> 
     <cfset thisLocationName = trim(allLocCode.trans_location) /> 

     <cfquery name="allLocCodeForLocationQry" dbtype="query"> 
      SELECT trans_location,count(*) AS locCntr FROM GetLocationInfo WHERE trans_location='#thisLocationName#' GROUP BY trans_location ORDER BY trans_location 
     </cfquery> 
     <cfoutput query="allLocCodeForLocationQry"> 
     <tr> 
     <td><strong>#thisLocationName#</strong></td> 
     <td>#NumberFormat((allLocCodeForLocationQry.locCntr/allLocCode.locationCount) * 100, '9.99')#%</td> 
     <td>#allLocCodeForLocationQry.locCntr#</td> 
     </tr> 
    </cfoutput> 
    </cfloop> 
     <cfset columnSum = ArraySum(allLocCode['locationCount'])> 
    <tr> 
     <td><strong>Total</strong></td> 
     <td></td> 
     <td><cfoutput>#columnSum#</cfoutput></td> 
     <cfdump var="#allLocCode#"> 
     <cfdump var="#allLocCodeForLocationQry#"> 
     <cfdump var="#thisLocationName#"> 
    </tr> 
    </tbody> 
    <!--- Total of All Sum of each column ---> 
</table> 

enter image description here

Правильный ответ должен отражать 334 не 340

+0

Не удалось ли это устранить, отредактировав первый запрос 'allLocCode' только для возврата строк, где столбец TRANS_LOCATION не пуст или пуст? В настоящее время в нем нет предложения WHERE. – TRose

+0

Бесплатные очки - это весело, но я обычно собираю только ответы, на которые я уверен, во время публикации. Мой комментарий был счастливым. Рад, что это помогло! – TRose

+0

В вашем примере все они на 100%, поэтому я предполагаю, что вы имеете в виду средний процент? Вы бы поместили все проценты в список или массив, как и в случае с подсчетом местоположения, а затем разделите его на показатель записи соответствующего запроса. – TRose

ответ

0

В соответствии с просьбой, вот ответ с соответствующим кодом изолированным:

<cfquery name="allLocCode" dbtype="query"> 
SELECT DISTINCT trans_location, COUNT(*) AS locationCount 
FROM GetLocationInfo 
WHERE trans_location is not null 
GROUP BY trans_location 
ORDER BY trans_location 
</cfquery> 

Если вам нужна дополнительная помощь с Я бы рекомендовал начать новую запись. Я вижу, что из вашей истории у вас уже есть несколько потоков, связанных с этой функцией, и по мере усложнения это поможет разделить все.