Thank you to everyone.
The count(distinct order#), count(distinct pick#) will work.
The last order# and pick# are incremented by 1 from a table by company when
orders and picks are run.
No null values.
Thanks again,
Craig
-----Original Message-----
From: midrange-l-bounces@xxxxxxxxxxxx
[mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of CRPence
Sent: Monday, June 30, 2008 5:38 PM
To: midrange-l@xxxxxxxxxxxx
Subject: Re: SQL group totals
I wonder if the given data might not be a little overly simplistic?
My response assumes the NULL value is not allowed.
If the highest numeric value for order# & pick#, across the group,
always gives the expected count, then perhaps:
<code>
-- Assuming order# always increments by one w/in the group and
-- the pick# always increments even across orders as data shows
select co#, cust#, po#, max(order#), max(pick#)
from thefile
group by co#, cust#, po#
<code>
If the maximum value is not always ensured to match the desired
count, because the values in order# need only be distinct to influence
the count, yet the pick# values remain unique across all orders in a
group as shown, then perhaps:
<code>
select co#, cust#, po#, count(distinct order#), count(distinct pick#)
from thefile
group by co#, cust#, po#
</code>
If the pick# rolls over to one, on each new order#, then perhaps:
<code>
-- Assuming order# always increments by one w/in the group
-- but that the pick# restarts at one on a new order
select co#, cust#, po#, max(order#), count(*)
from thefile
group by co#, cust#, po#
</code>
With no assumptions of what the _values_ might be in rows for either
order# or pick# [i.e. an actual row count versus values count], then
perhaps:
<code>
with
SumOrd (co#, cust#, po#, order#, pickcount) as
select co#, cust#, po#, order#, count(*)
from thefile
group by co#, cust#, po#, order#
select co#, cust#, po#, count(*), sum(pickcount)
from SumOrd
group by co#, cust#, po#
</code>
Regards, Chuck
Craig Jacobsen wrote:
SQL gurus,
I need to get 2 group totals.
I have a table that contains Co#, Cust#, PO#, Order#, Pick#.
There could be multiple Order#s and multiple Pick#s.
(One PO# could generate more than one internal Order# and each
Order# could generate more than one pick#.
The warehouse manager would like to see a report
by detail (no problem):
Co# Cust# PO# Order# Pick#
100 101 a1 1 1
100 101 a1 1 2
100 101 a1 1 3
100 101 a1 2 4
100 101 a1 2 5
And a report summary:
Co# Cust# PO# #Orders #Picks
100 101 a1 2 5
I could write an RPG program and use level breaks which would
be very easy for me. I am worried about maintaining the
program when I'm not around and not everyone here understands
the RPG cycle.
How would I do this with SQL?
As an Amazon Associate we earn from qualifying purchases.