SQL:选择查询中间的求和失败
我有以下表格: 发票SQL:选择查询中间的求和失败,sql,join,group-by,Sql,Join,Group By,我有以下表格: 发票 发票ID 公司名称 发票行 发票号码 发票ID 数量 我想要以下信息:公司名称和ID为1760的发票总额 我使用以下查询: SELECT i.*, sum(il.amount) as 'Total' FROM invoice i JOIN invoiceLine il on i.invoiceID = il.InvoiceID WHERE i.InvoiceID = 1760 我认为这是一个错误: 列“invoice.invoiceID”在选择列表中无效,因
- 发票ID
- 公司名称
- 发票号码
- 发票ID
- 数量
SELECT i.*, sum(il.amount) as 'Total'
FROM invoice i JOIN invoiceLine il on i.invoiceID = il.InvoiceID
WHERE i.InvoiceID = 1760
我认为这是一个错误:
列“invoice.invoiceID”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中
为什么返回错误,为什么它希望我使用GROUPBY子句,而我只希望返回一行?我是否有义务在两个查询中执行此操作 对于每个未聚合的列,都需要一个GROUP BY 试试这个:
SELECT i.invoiceID, i.companyName, sum(il.amount) as 'Total'
FROM invoice i JOIN invoiceLine il on i.invoiceID = il.InvoiceID
WHERE i.InvoiceID = 1760
GROUP BY i.invoiceID, i.companyName
执行聚合函数时,需要指定要分组的列
SELECT i.InvoiceID,i.CompanyName, sum(il.amount) as 'Total'
FROM invoice i JOIN invoiceLine il on i.invoiceID = il.InvoiceID
WHERE i.InvoiceID = 1760
group by i.InvoiceID,i.CompanyName
您可以使用相关子查询:
SELECT i.*,
(SELCT sum(il.amount)
FROM invoiceLine il
WHERE i.invoiceID = il.InvoiceID
) as Total
FROM invoice i
WHERE i.InvoiceID = 1760;
将此i.invoiceID更改为i.invoiceID大写i。并让我知道发生了什么?无法解决此问题,如果我使用
i.*,SUM(il.amount)
您使用与表列字段中相同的大小写字母,您在完整查询中出错,请检查它。