【问题标题】:CF8 - Sum in a loopCF8 - 循环求和
【发布时间】:2012-11-16 10:38:47
【问题描述】:

我有一个问题:

<cfquery name="getDesc" datasource="#ds#">
  SELECT
    desc,
    SUM(charge) as cost,
    COUNT(*) as cnt
  FROM
    product
  WHERE Length(desc) > 0
</cfquery>

然后填充一个表格:

<table>
  <tbody>
      <tr>
        <th>Description</th>
        <th>Amount of Charges</th>
        <th>Cost (&pound;)</th>
      </tr>

      <cfoutput query="getDesc">
      <tr>
        <td>
          #HTMLEditFormat(getDesc.desc)# <br />
        </td>     
        <td>
          #HTMLEditFormat(getDesc.cnt)# <br />
        </td>
        <td>
            #HTMLEditFormat(getDesc.cost)# <br />
        </td>
      </tr>
    </cfoutput>
  </tbody>
</table>

我的问题是我想合并表中具有相同值的两行,并将它们的两个计数加在一起。

到目前为止我有:

<table>
  <tbody>
      <tr>
        <th>Description</th>
        <th>Amount of Charges</th>
        <th>Cost (&pound;)</th>
      </tr>

      <cfoutput query="getDesc">
      <tr>
        <cfif getDesc.desc EQ 'No Charge' OR getDesc.desc EQ 'No Charge (2)'>
          <td>
            No Charge & (2)
          </td>
          <td>
            <cfset cntSum = arraySum(getDesc['cnt'])>
            #cntSum#
          </td>
        <cfelse>
        <td>
          #HTMLEditFormat(getDesc.desc)# <br />
        </td>     
        <td>
          #HTMLEditFormat(getDesc.cnt)# <br />
        </td>
        </cfif>
        <td>
            #HTMLEditFormat(getDesc.cost)# <br />
        </td>
      </tr>
    </cfoutput>
  </tbody>
</table>

但这给了我两行'No Charge & (2)',计数是表中所有其余行的总和,而不仅仅是我想要的两行。

希望这是有道理的。

【问题讨论】:

    标签: mysql loops coldfusion coldfusion-8 addition


    【解决方案1】:

    我会更改您的查询以获取您需要的数据。以下是我刚刚整理的,我认为可以满足您的要求:

      SELECT
        CASE `desc` WHEN 'No Charge (2)' THEN 'No Charge' ELSE `desc` END,
        SUM(charge) as cost,
        COUNT(*) as cnt
      FROM
        product
      WHERE Length(`desc`) > 0
      group by CASE `desc` WHEN 'No Charge (2)' THEN 'No Charge' ELSE `desc` END
    

    case 语句将“No Charge (2)”更改为“No Charge”,因此两种值都只有一行。 group by 语句使 mySQL 对“desc”的不同值执行一次求和和计数。

    【讨论】:

    • 不错的巴尼。您的个人资料有点稀疏。我想看看你的网站。想想看,我刚搬了我的,我的个人网站不存在。嗯……我想我知道今天剩下的时间我要做什么了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    相关资源
    最近更新 更多