布鲁盟室内设计邦邦:SQL 语句问题!

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 23:27:09
Select DISTINCT Invoice.InvoiceID,Invoice.Payer,Invoice.InvoiceNo,Invoice.Issued,SUM(Invoice_Detail.Amount) As Expr1 from Invoice,Invoice_Detail Where Invoice.Payer='" + Payer.Text + "' AND Invoice.Issued>='2005-10-10' AND Invoice.Issued<='2006-02-10' GROUP BY Invoice.InvoiceID

编译出现:
列 'Invoice.Payer' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
列 'Invoice.InvoiceNo' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
.........................
RE1:沙发上座着个八哥,呵呵
RE2:在关键字 'from' 附近有语法错误。

其实二楼的说的很正确。
打个比方,下边的表A。
X Y
-------
a 1
a 2
b 1
b 2
b 3
你执行如下sql
select X,sum(Y) from A group by X;
结果显示:
a 3
b 6

那么下边这个呢?
select X,Y from A group by X;
执行的话就会报你那个错误。
想像一下结果,你就知道你错在哪里了。

错误说明不是很清楚了吗:“因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中”。 如果使用了group by字句的话,那么select字句中的字段必须是出现在group by中的,或者要对该字段使用聚合函数。

Invoice.Payer,Invoice.InvoiceNo,Invoice.Issued三个字段,要么从select子句中去掉,要么加到group by子句中。

Select DISTINCT Invoice.InvoiceID,Invoice.Payer,Invoice.InvoiceNo,Invoice.Issued,SUM(Invoice_Detail.Amount) As Expr1 from (((((Invoice,Invoice_Detail)))))) Where Invoice.Payer='" + Payer.Text + "' AND Invoice.Issued>='2005-10-10' AND Invoice.Issued<='2006-02-10' GROUP BY Invoice.InvoiceID

不明白,要做什么