Here is your best bet:

Run this query:

SELECT     Agency_No, Fund_No, completed, count(*) as totalRecs,
FROM         SCO567_568
WHERE     (Agency_No = #client.agency_no#)
GROUP BY Agency_No, Fund_No, completed
ORDER BY Agency_No, Fund_No, completed

You'll get results like this:

AGY      FUND     Completed     TotalRecs     
418      001      0             4 
418      001      1             4 
418      534      0             2 
418      534      1             1

Now output like this (untested):

AGY      Fund     TotalRecs  Completed 
<cfloop from="2" to="#query.recordcount#" index="i" step="2">
        <cfset total = totalRecs + myquery.totalRecs[i-1]>
        #AGY#      #FUND#     #Total#   #totalRecs#<br>
</cfloop>

+-----------------------------------------------+
Bryan Love
  Database Analyst
  Macromedia Certified Professional
  Internet Application Developer
TeleCommunication Systems
[EMAIL PROTECTED]
+-----------------------------------------------+

"...'If there must be trouble, let it be in my day, that my child may have
peace'..."
        - Thomas Paine, The American Crisis

"Let's Roll"
        - Todd Beamer, Flight 93



-----Original Message-----
From: Andrew Peterson [mailto:[EMAIL PROTECTED]
Sent: Monday, July 28, 2003 12:01 PM
To: CF-Talk
Subject: [sql] grouping 


Hi

I've got a rather simple query (SQL Server 2000) and its result set
looks like this:

AGY      FUND     TotalRecs     
418      001      8 
418      534      3 

I'm basically selecting a couple of fields and doing a grouping for the
third field (COUNT(*) AS totalRecs). This works fine. The user, however,
wants a sub grouping, depending on other fields in the result set, and I
can't figure out how to do it. Basically, they want their result set to
look like this:

AGY      Fund     TotalRecs  Completed     
418      001      8 total     4
418      534      3 total     1

The added field, Completed, is a yes/no field. I can incorporate this
field into the result set, by doing this SQL:

SELECT     Agency_No, Fund_No, count(*) as totalRecs,
                          (SELECT     COUNT(Completed)
                            FROM          sco567_568
                            WHERE      Completed = 1 AND AGENCY_NO
=#client.Agency_No#) AS totCompleted
FROM         SCO567_568
WHERE     (Agency_No = #client.agency_no#)

This gives the following result:

AGY      Fund     TotalRecs   Completed     
418      001      8 total     5
418      534      3 total     5

This fourth field, Completed, is displayed in the manner I expect, which
is to say that it is giving me the total number of records Completed for
the Agency_Number passed in. But what I need to do is factor in a WHERE
clause based also on the Fund_No, which is not passed in to the query
but rather obtained from the value SELECTed from the current row of the
table. In other words, the total for all the records for "Completed"
based on the agency_no passed in is 5, but what I want is the Completed
total for each row (Agency_No of 418 and Fund_No of 001 has 4 of its 8
total items marked Completed (not 5), and the second row, the total is 1
(not 5).
 
Is there any way finagling I can do to this query to get the results I
want, or perhaps another way to present the data in a row-based format
to achieve the same results? I actually told the user that I didn't
think it could be done, but it would be so sweet if it could. Any ideas?

Thanks in advance.


Sincerely,

Andrew




~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Archives: http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4
Subscription: 
http://www.houseoffusion.com/cf_lists/index.cfm?method=subscribe&forumid=4
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq

This list and all House of Fusion resources hosted by CFHosting.com. The place for 
dependable ColdFusion Hosting.
http://www.cfhosting.com

                                Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
                                

Reply via email to