2013-06-24 55 views
1

我做了一個基本的火鳥報告對所有債務人和交易 報告看起來撥打如下分組匹配的名稱與合計火鳥2.5


SELECT 
POSPAY.TXNO, 
DEBTORS.COMPANY, 
POSPAY.AMOUNT, 
POSINVTRANS.TXDATE 
FROM 
POSPAY 
INNER JOIN DEBTORS ON (POSPAY.ACCTNUMBER = DEBTORS.ACCOUNT) 
INNER JOIN POSINVTRANS ON (POSPAY.TXNO = POSINVTRANS.TXNO) 
WHERE 
PAYMNTTYPID = '7' 
and 
weekly = :weekly and 
txdate >= :fromdate and 
txdate <= :todate 

這正常工作和給我的輸出債務人名稱,TXNO,TXDATE,金額

我現在想編寫一個類似的報告,但需要對債務人進行分組,並給交易總額,即我需要輸出債務人名稱(如果約翰的兩倍,需要列出一次),總ammount的(約翰的交易總和)

我還需要innerjoin債務人但posinvtrans不再,我想這應該是這個樣子

SELECT 
POSPAY.TXNO, 
DEBTORS.COMPANY, 
POSPAY.AMOUNT 

FROM 
POSPAY 
INNER JOIN DEBTORS ON (POSPAY.ACCTNUMBER = DEBTORS.ACCOUNT) 

WHERE 
PAYMNTTYPID = '7' 
and 
weekly = :weekly and 
txdate >= :fromdate and 
txdate <= :todate 

Group by DEBTORS.COMPANY 

,但沒有運氣,「在選擇列表中(不包含在聚合函數或GROUP BY子句)無效表達」 任何建議得到錯誤的集團通過 ?

回答

1

的在選擇列表中的字段列表必須要麼也在group by列表中列出或者是聚合功能,如count(*)max(amount)

的問題是,你還沒有告訴火鳥做什麼用POSPAY.TXNOPOSPAY.AMOUNT和它不足以告訴你什麼想要發生在他們身上。

我建議你從查詢中刪除的2場,並有DEBTORS.COMPANYsum(POSPAY.AMOUNT)爲出發點選擇列表。

+0

非常感謝Nick Upson,報告​​的工作原理與我想要的完全一樣 –

0

如果您使用GROUP BY,您需要在GROUP BY中包含一列或在該列上應用聚合函數。在您的例子,你需要離開了POSPAY.TXNO,因爲這是交易的特定(或者你可以使用聚合函數LIST),你需要聚合函數適用SUMAMOUNT拿到總:

SELECT 
DEBTORS.COMPANY, 
SUM(POSPAY.AMOUNT) 

FROM 
POSPAY 
INNER JOIN DEBTORS ON (POSPAY.ACCTNUMBER = DEBTORS.ACCOUNT) 

WHERE 
PAYMNTTYPID = '7' 
and 
weekly = :weekly and 
txdate >= :fromdate and 
txdate <= :todate 

Group by DEBTORS.COMPANY