× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



The CASE statement will give you your units. I'm not on the 400 the syntax
check this right now, but something to the effect of:

Select Region, 
        District, 
        Color, 
        Red, 
        Yellow, 
        Blue, 
        case color 
                when 'red' then red 
                when 'blue' then blue 
                when 'yellow' then yellow 
                else -1 end 
        as Units
        from ...

Should get you the first field. 

The problem with the second is that you need to know the total to do the
math. Something like:

Select Region, 
        District, 
        Color, 
        Red, 
        Yellow, 
        Blue, 
        case color 
                when 'red' then red 
                when 'blue' then blue 
                when 'yellow' then yellow 
                else -1 end 
        as Units,
        Units/(select 
                sum     (
                        case color
                                when 'red' then red 
                                when 'blue' then blue 
                                when 'yellow' then yellow 
                                else 0 end
                        )
                from filename B
                where B.Region = A.Region
                        and B.Color = A.Color
                )
        as Allocation
        from filename A

Should work in concept, but I don't know how the iSeries will swollow the
use of 'units' field in the definition of the 'allocation' field, the
sub-select in the divide or the case statement in the sum clause. But that's
the general idea. If it won't allow the use of 'units' in the definition of
'allocation' try:

Select Region, 
        District, 
        Color, 
        Red, 
        Yellow, 
        Blue, 
        case color 
                when 'red' then red 
                when 'blue' then blue 
                when 'yellow' then yellow 
                else -1 end 
        as Units,
        case color 
                when 'red' then red 
                when 'blue' then blue 
                when 'yellow' then yellow 
                else -1 end 
        /
                (select 
                sum     (
                        case color
                                when 'red' then red 
                                when 'blue' then blue 
                                when 'yellow' then yellow 
                                else 0 end
                        )
                from filename B
                where B.Region = A.Region
                        and B.Color = A.Color
                )
        as Allocation
        from filename A

Which simply replaces the use of 'units' with its definition.

-Walden

------------
Walden H Leverich III
President
Tech Software
(516) 627-3800 x11
(208) 692-3308 eFax
WaldenL@xxxxxxxxxxxxxxx
http://www.TechSoftInc.com 

Quiquid latine dictum sit altum viditur.
(Whatever is said in Latin seems profound.)
 

-----Original Message-----
From: Dan [mailto:dbcerpg@xxxxxxxxx] 
Sent: Monday, April 21, 2003 4:19 PM
To: rpg400-l@xxxxxxxxxxxx
Subject: Can SQL do this?


I currently have SQL-generated output from 3 joined files that looks like
this:

Region  District  Color   #Red   #Yellow   #Blue   
------  --------  -----  ------   ------  ------
NER     BOS         Y       25        7      47
NER     NYC         Y       18        4      20
NER     NAN         Y       14        9      76
NER     BAN         R       17        9      62
NER     PIT         R       11        2      50
NER     NAN         R       34        9      33

I need to end up with this result (two new columns):

Region  District  Color   #Red   #Yellow   #Blue   UNITS  ALLOCATION
------  --------  -----  ------   ------  ------   -----  ----------
NER     BOS         Y       25        7      47       7       .3500
NER     NYC         Y       18        4      20       4       .2000
NER     NAN         Y       14        9      76       9       .4500
NER     BAN         R       17        9      62      17       .2741
NER     PIT         R       11        2      50      11       .1774
NER     NAN         R       34        9      33      34       .5483

The UNITS column needs to be derived from one of the #Red, #Yellow, or #Blue
values, depending on
the value of Color.  I.e. (how I would do it in RPG):
   Select
   When   Color = 'R'
   Eval   UNITS = #Red
   When   Color = 'Y'
   Eval   UNITS = #Yellow
   Other
   Eval   UNITS = #Blue
   Endsl

THEN...  I also need to get an ALLOCATION of the units for the Region and
Color.  Note that, for
Region 'NER' and Color 'Y', there are a total of 20 units.  District 'BOS'
has 7 of those 20 units
so, doing the math, the allocation is 0.35.  The sum of the ALLOCATION
column for a given
Region/Color always adds up to (approximately) 1.00.

If SQL can do all this, I may well be able to eliminate one RPG program.

TIA, Dan

__________________________________________________
Do you Yahoo!?
The New Yahoo! Search - Faster. Easier. Bingo
http://search.yahoo.com
_______________________________________________
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo.cgi/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.

As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.