如何於 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 定義.
A blog about IBM i (AS/400), MQ and other things developers or Admins need to know.
星期三, 11月 01, 2023
2002-04-04 如何於 Query/400 中使用動態結果欄位(動態加總) ?
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言