获取cfquery中返回的特定行数

Den*_*one 2 sql-server coldfusion cfquery

我知道你可以得到你的查询中返回了多少项的计数,但是......问题:是否有可能得到一个recordcount具有特定值的行,例如......

<cfset totalReturned = myquery.recordcount>

<cfset totalReturnedComplete = myquery.recordcount (where status = "Complete")>
Run Code Online (Sandbox Code Playgroud)

我知道上面的内容不起作用,但我正在寻找类似上面代码的内容.

Dav*_*ber 6

你有几个选择.您可以使用计数器循环查询,该计数器在status = "Complete"您可以使用查询查询时递增:

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

但是,另一种方法是,因为您正在使用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 />
Run Code Online (Sandbox Code Playgroud)

请参见SQL小提琴.