星期三, 11月 01, 2023

2002-04-04 如何於 Query/400 中使用動態結果欄位(動態加總) ?


如何於 Query/400 中使用動態結果欄位(動態加總) ?
 
所謂的動態結果欄位指的是某欄位值是由某些欄位組合或加總而得到的.
例如:
每月要產生一份年累計的銷售報表, 某銷售明細檔欄位含有每月銷售額 AMT01, AMT02, AMT03,..., AMT11, AMT12 12 個欄位,

但 QUERY/400 結果欄位設定是固定的如
年累計 YTD 設定如下:
                              Define Result Fields                              
                                                                                
 Type definitions using field names or constants and operators, press Enter.    
   Operators:  +, -, *, /, SUBSTR, ||, DATE...                                  
                                                                                
 Field       Expression                         Column Heading        Len   Dec 
 YTD         AMT01 + AMT02 + AMT03                                              
                                                                                
                                                                                
                                                                                
是前三月銷售額加總, 但到四月時要再執行此Query Report 時,就需要人工更改
YTD 設定為 AMT01 + AMT02 + AMT03 + AMT04, 而無法自動執行, 這 YTD 欄位就是動態結果欄位.

QUERY/400 是無法做到所設定的欄位是由動態欄位組成, 
但可建立另一選取月份檔案只有一筆紀錄(切記只有一筆, 不多不少)指定某些欄位要加總的,
例如要動態加總而不用更改 QUERY/400 設定, 可建立一個包含 12 個數字性欄位
S1, S2, S3,....,S11, S12 表示 12 個月份, 值為 1 時表該月份要加總, 為 0 時表不加總,
若要加總一到三月設定如下:
1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.

於 QUERY/400 中將設定選取月份檔案加入 File List 中
                            Specify File Selections                             
                                                                                
 Type choices, press Enter.  Press F9 to specify an additional                  
   file selection.                                                              
                                                                                
   File . . . . . . . . .   SALES          Name, F4 for list                    
     Library  . . . . . .     SALESLIB     Name, *LIBL, F4 for list             
   Member . . . . . . . .   *FIRST         Name, *FIRST, F4 for list            
   Format . . . . . . . .   *FIRST         Name, *FIRST, F4 for list            
   File ID  . . . . . . .   T01            A-Z99, *ID                           
                                                                                
   File . . . . . . . . .   MTHSELECT      Name, F4 for list                    
     Library  . . . . . .      SALES       Name, *LIBL, F4 for list             
   Member . . . . . . . .   *FIRST         Name, *FIRST, F4 for list            
   Format . . . . . . . .   *FIRST         Name, *FIRST, F4 for list            
   File ID  . . . . . . .   T02            A-Z99, *ID                           
                                                                                
按執行鍵進入 Type of join 選取畫面
                             Specify Type of Join                             
                                                                              
Type choice, press Enter.                                                     
                                                                              
  Type of join . . . . . . . .   1      1=Matched records                     
                                        2=Matched records with primary file   
                                        3=Unmatched records with primary file 
                                                                              
選 1 按執行鍵進入 How to Join 畫面
                           Specify How to Join Files                            
                                                                                
 Type comparisons to show how file selections are related, press Enter.         
   Tests:  EQ, NE, LE, GE, LT, GT                                               
                                                                                
 Field             Test     Field                                               
 *ALL                                                                           
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
Field 指定選取輸入 *ALL, 按執行鍵完成檔案選取.

接著 設定 YTD 運算式如下:
 AMT1*S1 + AMT2*S2 +  ... + AMT12*S12
將月份銷售額加總起來, 只要將欲加總月份的選取月份值為 1 , QUERY/400 便將哪幾個月份加總.

如此一來, 便可藉由月份選取檔隨機計算加總而不用更改 QUERY/400 定義.
 





沒有留言: