2013-05-31 41 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 

这可能仍然不会为您提供正确的号码,因为您正在交付付款和收据。如果你想得到更好的答案,那么你应该在问题中提供样本数据和预期结果。