2013-05-31 42 views
0
有問題,這個sql查詢

IM,查詢是自我解釋,所以看着它會告訴ü什麼問題,有SQL查詢與GROUP BY子句,與和aggreagte

SELECT customer.customerid, 
     paymentdata.paidamount, 
     paymentdata.balanceamount, 
     sum(paymentreceipt.paidamount) AS Expr1 
FROM customer 
     INNER JOIN paymentdata 
       ON customer.customerid = paymentdata.customerid 
     INNER JOIN paymentreceipt 
       ON customer.customerid = paymentreceipt.customerid 
GROUP BY customer.customerid 
+1

我看着它,我看到的問題是,你沒有給我一個線索是什麼問題 – DaveRlz

+1

哪裏是sum()聚合?應該有一些像(sum(somecloumn) – nakosspy

回答

2

那麼你怎麼想計算等欄目,你只customerid分組使用聚合函數爲組中未使用的列,但要顯示也paymentdata.paidamount,paymentdata.balanceamountpaymentreceipt.paidamount

考慮到該組爲每個組返回多行,所以sql-server(或除MySql外的任何其他rdbms)不知道要爲未分組的列顯示哪一行。如果您不想挑選出單行,則必須彙總該列。所以例如通過使用SUMCOUNTMAXAVG

例如:

SELECT customer.customerid, 
     MAX(paymentdata.paidamount) AS MaxPaid, 
     AVG(paymentdata.balanceamount) AS AverageBalance, 
     SUM(paymentreceipt.paidamount) AS ReceiptPaidSum 
FROM customer 
     INNER JOIN paymentdata 
       ON customer.customerid = paymentdata.customerid 
     INNER JOIN paymentreceipt 
       ON customer.customerid = paymentreceipt.customerid 
GROUP BY customer.customerid 
+0

我想使用這個「sum(paymentreceipt.paidamount)AS Expr1」只有 –

+0

@MirzaAsghirBaig:編輯我的答案使用SUM(paymentreceipt.paidamount)AS ReceiptPaidSum'。但是你是什麼想與其他兩個非分組列? –

+0

我想有這樣的事情 –

0
SELECT customer.customerid,paymentdata.customerid,paymentreceipt.customerid 
     paymentdata.paidamount, 
     paymentdata.balanceamount, 
     paymentreceipt.paidamount AS Expr1 
FROM customer,paymentdata,paymentreceipt 
     INNER JOIN paymentdata 
       ON customer.customerid = paymentdata.customerid 
     INNER JOIN paymentreceipt 
       ON customer.customerid = paymentreceipt.customerid 
GROUP BY customer.customerid,paymentdata.customerid,paymentreceipt.customerid 
2

你有IM在你的小組中缺少一些術語。需要包括除彙總之外的所有列。

1

您需要通過條款

SELECT customer.customerid, 
     sum(paymentdata.paidamount), 
     sum(paymentdata.balanceamount), 
     sum(paymentreceipt.paidamount) AS Expr1 
FROM customer 
     INNER JOIN paymentdata 
       ON customer.customerid = paymentdata.customerid 
     INNER JOIN paymentreceipt 
       ON customer.customerid = paymentreceipt.customerid 
GROUP BY customer.customerid 
0

如果你正在做的聚集,那麼你可能想聚合函數:

SELECT customer.customerid, 
     sum(paymentdata.paidamount), 
     sum(paymentdata.balanceamount), 
     sum(paymentreceipt.paidamount) AS Expr1 
FROM customer 
     INNER JOIN paymentdata 
       ON customer.customerid = paymentdata.customerid 
     INNER JOIN paymentreceipt 
       ON customer.customerid = paymentreceipt.customerid 
GROUP BY customer.customerid 

這可能仍然不會爲您提供正確的號碼,因爲您正在交付付款和收據。如果你想得到更好的答案,那麼你應該在問題中提供樣本數據和預期結果。