TLORDER_ALL是一種貨件的彙總表。它將向分配給此貨件的所有承運商提供總應付賬款,並且應付總額記錄在INT_PAYABLE_AMT字段中。在一對多關係中獲取準確的利潤DB2
另一方面,ORDER_INTERLINER_ALL表將列出從TLORDER_ALL表中分配到貨件的每個運輸公司的應付款。你基本上有TLORDER_ALL和ORDER_INTERLINER_ALL之間的一對多關係。支付給每個承運人的資金記錄在ORDER_INTERLINER_ALL表中的AMOUNT字段中。如果交貨後,會計決定調整應付給承運商的貨幣,應付給承運人的調整應記錄在ORDER_INTERLINER_ALL表中的ADJUSTED_AMOUNT中。如果不調整,則ADJUSTED_AMOUNT = AMOUNT。
請注意,分配給裝運的每個承運商可能有不同的貨幣付款,這是我使用INT_PAYABLE_AMT * ADJUSTED_AMOUNT/AMOUNT進行會計調整後進行轉換的原因,因爲INT_PAYABLE_AMT與CHARGES(收入)記錄的貨幣相同,字段在TLORDER_ALL表中。
Long Store short,您可能會收到以美元爲單位的收入(CHARGES字段)和以加元和/或美元貨幣結算的多個承運人。應付總額(INT_PAYABLE_AMT)在轉換後以與收入(收費)字段相同的貨幣(USD)記錄。最重要的是,您向Carrier修改的付款(讓我們稱之爲INT_PAYABLE_ADJUST_AMT)可能與INT_PAYABLE_AMT不同。
這是我的彙總查詢:
`SELECT
T.CUSTOMER,
T.CALLNAME,
COUNT(T.BILL_NUMBER) LOADS,
SUM(T.CHARGES+T.XCHARGES)TOTAL_REVENUE,
(SUM(T.CHARGES+T.XCHARGES)-SUM(T.INT_PAYABLE_AMT) *SUM(O.ADJUSTED_AMOUNT) /SUM(O.AMOUNT)) MARGIN
FROM TLORDER_ALL T
INNER JOIN ORDER_INTERLINER_ALL O ON O.DETAIL_LINE_ID=T.DETAIL_LINE_ID
WHERE T.INT_PAYABLE_AMT<>0
AND T.CHARGES+T.XCHARGES<>0
AND T.CUSTOMER='117990'
AND O.INTERFACE_STATUS='I'
AND O.AMOUNT<>0
GROUP BY T.CUSTOMER,T.CALLNAME`
這是我的詳細信息查詢
SELECT
T.DETAIL_LINE_ID,
T.BILL_NUMBER,
T.CUSTOMER,
T.CALLNAME,
(T.CHARGES+T.XCHARGES)TOTAL_REVENUE,
(T.CHARGES+T.XCHARGES-T.INT_PAYABLE_AMT *O.ADJUSTED_AMOUNT /O.AMOUNT) MARGIN,
T.INT_PAYABLE_AMT,
O.ADJUSTED_AMOUNT,
O.AMOUNT,
O.INTERFACE_STATUS
FROM TLORDER_ALL T
INNER JOIN ORDER_INTERLINER_ALL O ON O.DETAIL_LINE_ID=T.DETAIL_LINE_ID
WHERE T.INT_PAYABLE_AMT<>0
AND T.CHARGES+T.XCHARGES<>0
AND YEAR(T.DELIVER_BY)= YEAR(CURRENT DATE)
AND MONTH(T.DELIVER_BY)=MONTH(CURRENT DATE)-1
AND T.CUSTOMER='117990'
AND O.INTERFACE_STATUS='I'
AND O.AMOUNT<>0
我的問題是,我可以如何消除同一批貨物的多個條目,因爲貨件有多個承運人,並且能夠在Summary和Details輸出中獲得準確的最終保證金?
如果我們回顧Details圖像,我想得到5條記錄不是14,並且將所有運營商應付賬款進行彙總,使用INT_PAYABLE_AMT * ADJUSTED_AMOUNT/AMOUNT對其進行轉換,並對這5條記錄的每行減去TOTAL_REVENUE。在摘要輸出中應用相同的邏輯以獲得準確的結果。
謝謝。
您的格式化使問題難以閱讀,但您收到的錯誤消息似乎很清楚。如果沒有'GROUP BY',你不能使用'SUM'。 –
以這種方式編寫的子查詢傾向於按行執行,並且性能受到影響(儘管如果您只查詢單個帳戶,這可能不會很大)。你的查詢目前有問題 - 如果每個細節行有多個'interface_status'行,它將會'隨機'丟棄一個,並且默默地放棄,幾乎肯定不是你想要的。你四捨五入到兩個不同的小數位。一些示例數據將有助於瞭解如何更好地構建此查詢。 –
嗨,不存在「o」表「和group by子句執行一個總和...你的sql語法是錯誤的 – Esperento57