Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:选择查询中间的求和失败_Sql_Join_Group By - Fatal编程技术网

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
  • 数量
我想要以下信息:公司名称和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”在选择列表中无效,因为它未包含在聚合函数或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)
您使用与表列字段中相同的大小写字母,您在完整查询中出错,请检查它。