首页 > 解决方案 > 来自 QoQ 的 Coldfusion 图表多个系列

问题描述

我正在尝试在电子邮件中插入一个图表,该图表将随着时间的推移绘制多个系列的数据。电子邮件工作正常,图表成功附加,但我生成图表的方式有问题。

我正在尝试做的事情:遍历查询结果,按“地区描述”分组(为每个地区制作一个系列),然后为每个地区的每个月生成一个数据点。

这是我试图绘制的查询结果的示例:

查询结果查询

每个六个月的六个“领土”都有一个条目。

这是我在网上找到的代码,我一直在尝试使用。

 <cfchart
        format="png"
        name="marketADH"
        xAxisTitle="Month"
        yAxisTitle="% Adherence"
        chartHeight = "500"    
        chartWidth = "500" 
        scalefrom="60"
        scaleto="90"
        font="Arial"
        gridlines="10"
        showXGridlines="no"
        showYGridlines="no"
        showborder="no"
        show3d="no" 
        showlegend="yes"
        sortxaxis="no"
        showmarkers="yes" 
 > 



 <cfloop query="HISTORY_CHART" group="TERRITORY_DESC"> 
      <!---- this part of the code will run ONCE for each territory ---->

   <cfchartseries 
     type="curve"
     paintStyle="plain"
     seriesLabel="#HISTORY_CHART.TERRITORY_DESC#">

     <cfloop>
         <!----- this part of the code will run once for every record for the territory  ------>
         <cfchartdata item="#HISTORY_CHART.RPT_MTH#" value="#HISTORY_CHART.ADHERENCE_PCT#">
     </cfloop>

   </cfchartseries>

  </cfloop>

 </cfchart>

结果:图表正在生成并附加在电子邮件中,但只有一个月份值 - 2017 年 12 月 1 日,这是数据集中六个月中的第一个。本月所有 36 个左右的值似乎都填充在 y 轴上。

我期望看到的是这样的:

Excel 样机

我最终得到的是:

实际结果

任何人都可以提供的任何帮助将不胜感激。非常感谢。

标签: coldfusioncfloopcfchart

解决方案


<cfloop query="HISTORY_CHART" group="TERRITORY_DESC">

我猜“组”没有按预期工作,因为查询数据没有正确排序。

cfloop文档没有充分强调的是“组”功能要求查询数据按照与“组”语句相同的顺序排序。如果它按不同的列排序(例如“Rpt_Mth”)并且 cfloop 按“Territory_Desc”分组,您将不会获得预期的输出。

TryCF.com 上的已排序与未排序示例

确保 sql 查询按组中使用的同一列“Territory_Desc”进行排序。然后图表应该正确生成。

<cfquery ...>
  SELECT Adherence_Pct,Rpt_Mth,Territory_Desc 
  FROM   TableName 
  ORDER BY Territory_Desc 
</cfquery>

推荐阅读