문제

나는 이런 종류의 질문을하기 전에이 종류의 질문을했지만 아마도 코드가 너무 길거나 나의 질문이 불분명하기 때문에 좋은 대답을받지 못했습니다.이 시간 동안 나는 최선을 다하려고 노력할 것입니다 :) 지금까지는 에 잘 작동하는 행 합계를 테이블에서 찾을 코드를 작성했습니다.

<cfloop list="#product_id_list#" index="product_index">
    <cfloop list="#month_list#" index="month_index">
        <cfoutput query="GET_SALES_TOTAL">
            <cfif AY eq month_index and product_id eq product_index>
                <cfloop list="#type_index#" index="tt_index">
                    <cfset 'alan_#tt_index#_#month_index#_#product_index#' = evaluate(tt_index)>
                </cfloop>
            </cfif>
        </cfoutput>
    </cfloop>
</cfloop>
<cfset 'total_#ii_index#_#p_index#'=evaluate('total_#ii_index#_#p_index#') + #evaluate('alan_#ii_index#_#ddd_other#_#p_index#')#>
.

이제 열 합계를 찾고 싶습니다.열 합계의 코드는 작동하지만 잘못 작동합니다.그것은 마지막 제품의 합계를 계산합니다.

<cfloop list="#product_id_list#" index="product_index">
    <cfloop list="#month_list#" index="month_index">
        <cfoutput query="GET_SALES_TOTAL">
            <cfif AY eq month_index and product_id eq product_index>
                <cfloop list="#type_index#" index="tt_index">
                    <cfset 'alan2_#tt_index#_#month_index#_#product_index#' = evaluate(tt_index)>
                </cfloop>
            </cfif>
        </cfoutput>
    </cfloop>
</cfloop>
<cfset 'total2_#ddd_other#_#p_index#'=evaluate('total2_#ddd_other#_#p_index#') + #evaluate('alan2_#ii_index#_#ddd_other#_#p_index#')#>
.

행 합계의 출력 :

<cfloop list="#product_id_list#" index="p_index">
    <cfloop list="#type_index#" index="kk_ind">
        <td align="center">
          <font color="##FF0000">#TLFormat(evaluate('total_#kk_ind#_#p_index#'),0)#</font>
        </td> 
    </cfloop>
</cfloop>
.

및 열 합계 출력 :

<cfloop list="#month_list#" index="kk">
 <td align="center">
   <cfset satis_oran= evaluate('total2_#kk#_#p_index#')>
     #evaluate(satis_oran)#
 </td>
</cfloop>
.

제품 ID로 컬럼 출력을 반복하지 않았 음을 알고 있기 때문에 많은 <td>의 많은 데이터를 의미합니다.여기서 실수가 될 수있는 것은 무엇입니까?

도움이 되었습니까?

해결책

이것은 따르기가 매우 어렵습니다.

일부 제안 ....

SQL 문 에서이 작업을 수행하십시오

단순히 그룹 명령문을 사용하여 이러한 모든 값을 합할 수 있습니다.뭔가 ...

select productindex
    , datepart('yyyy', datecolumn) as year
    , datepart('mm', datecolumn) as month
    , sum(valcolumn) as valcolumnsum
from productinfo
group by productindex, datepart('yyyy', datecolumn), datepart('mm', datecolumn)
.

모든 개월 또는 제품이 실제로 괜찮은 반환 된 쿼리에있는 경우는 없습니다.당신은 여전히 제품과 몇 개월 후에 루프를 루프 할 수 있습니다.

평가 를 사용하지 마십시오.

CF가 문자 그대로 매우 느립니다. 이는 매우 느립니다.변수 이름을 참조 해야하는 경우 범위와 브래킷을 동적으로 사용하십시오.나중에 평가할 진술을 실제로 저장하는 경우에는 아마도 대안이 있습니다

글꼴 태그를 사용하지 마십시오

아마도 지난 6 년 동안 글꼴 태그를 사용하지 않았습니다.일부 레거시 코드에 종속되지 않는 한 글꼴 태그를 사용하면 안됩니다.

다른 팁

쿼리에 열이있는 경우 각 값이 숫자가되도록하려면 다음을 수행 할 수 있습니다.

<cfset sum = arraySum(queryname['column'])>
.

숫자가 아닌 값이 발생하지 않으면 오류가 발생하므로 해당 필드 주위에 COLATESCE 문을 넣어야하거나 널 값이 0으로 변환되는지 확인해야합니다.

테이블 컬럼의 데이터 유형에 따라 이전 CF 버전 에서이 작업을 수행하십시오.

<cfset theSum = ArraySum(ListToArray(ValueList(queryName.column))) />
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top