我知道您可以查询查询中返回了多少项,但是...
问题:是否可以获取具有特定值的recordcount行,例如...

<cfset totalReturned = myquery.recordcount>

<cfset totalReturnedComplete = myquery.recordcount (where status = "Complete")>


我知道上面的方法不起作用,但是我正在寻找类似上面的代码的东西。

最佳答案

您有两种选择。您可以使用在status = "Complete"时增加的计数器来循环查询,也可以使用查询查询:

<cfquery name="mynewquery" dbtype="query">
    SELECT status, COUNT(*) AS status_cnt
      FROM myquery
     GROUP BY status
</cfquery>


但是,执行此操作的另一种方法是,由于您使用的是SQL Server,因此将修改您的初始查询(假设您有权执行此操作),以便使用status = "Complete"作为窗口返回SUM()的计数。功能:

<cfquery name="myquery" datasource="mydatasource">
    SELECT id, status
         , SUM(CASE WHEN status = 'Complete' THEN 1 ELSE 0 END) OVER ( ) AS complete_cnt
      FROM mytable
</cfquery>

<cfset totalReturned = myquery.recordcount />
<cfset totalReturnedComplete = myquery.complete_cnt />


See SQL Fiddle here.

关于sql-server - 获取cfquery中返回的特定行的计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30224258/

10-10 15:04