Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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
子查询在GROUPBY子句-MySQL中返回超过1行_Mysql_Sql_Select_Join_Group By - Fatal编程技术网

子查询在GROUPBY子句-MySQL中返回超过1行

子查询在GROUPBY子句-MySQL中返回超过1行,mysql,sql,select,join,group-by,Mysql,Sql,Select,Join,Group By,我正在尝试使用每个日期的正确金额总和获取查询的预期结果,但是,当它检测到相同的ID时,金额会不断累积。我希望按日期获取组。不幸的是,当我运行我的查询时,它得到一个错误,说子查询返回超过1行 我的问题是: SELECT a.DOB as `DATE`, (CASE when f.INHOUR > 12 or f.INHour = 12 Then 'PM' else 'AM' END) as Shift, concat(b.FIRSTNAME, ' ', b.LASTNAME) Fulln

我正在尝试使用每个日期的正确金额总和获取查询的预期结果,但是,当它检测到相同的ID时,金额会不断累积。我希望按日期获取组。不幸的是,当我运行我的查询时,它得到一个错误,说子查询返回超过1行

我的问题是:

 SELECT a.DOB as `DATE`, (CASE when f.INHOUR > 12 or f.INHour = 12 Then 'PM' 
else 'AM' END) as Shift, concat(b.FIRSTNAME, ' ', b.LASTNAME) Fullname, 
a.Amount as DECLARED, SUM(c.Amount) as CALCULATED, 
a.AMOUNT as `NET OF SPECIAL SALES`, 
d.Amount as `CASH OVER SHORT`,
a.AMOUNT as `CASH DEPOSIT`,
(SELECT SUM(gndrevn.AMOUNT) from gndrevn where gndrevn.ID= b.ID and 
gndrevn.type = "4" group by gndrevn.DOB, gndrevn.ID) as `TRANSACTION COUNT (POS)`
FROM gndsale a 
INNER JOIN emp b ON a.ID= b.ID 
INNER JOIN gndsale c ON b.ID= c.ID
INNER JOIN gndsale d on b.ID = d.ID
INNER JOIN adjtime f on a.ID= f.ID
WHERE a.type = "22" AND c.type = "4" AND d.type = "42" and 
STR_TO_DATE(a.DOB, '%m/%d/%Y') BETWEEN '2017-05-01' AND '2017-05-31' GROUP BY DECLARED 
order by STR_TO_DATE(a.DOB, '%m/%d/%Y')
它返回以下错误:

我试图删除gndrevn.DOB、gndrevn.ID,这是我的结果

刚刚添加的列Transaction Count POS是因为它在表中检测到类似的ID

我希望我的交易计数POS的结果如下:

我使用另一个查询运行了此操作,但它还需要select语句中的GROUPBY

问题是:

SELECT ID as `EMPLOYEE`, sum(AMOUNT) as AMOUNT, DOB as DATE from gndrevn 
where ID in (select ID from gndsale) and type = "4" group by 
DOB, ID order by STR_TO_DATE(DOB, '%m/%d/%Y')

我想我的GROUPBY语句在获取查询时遇到了问题。有人能帮我吗(

我想你想要的是从组中删除gndrevn.DOB,并在WHERE中添加gndrevn.DOB=a.DOB。

你的查询一团糟。错误信息很清楚:你的子查询返回了多条记录。这需要修复。哇!成功了!!:D谢谢!!:D我没有想到:(我对我的小组思考得太深了,按条款:(在深入思考时,我注意到我的计算列也不同步..它使用相同ID添加记录,但是,我也想使用日期来确定它….这个解决方案可行吗?您可以使用与以前相同的方法。只需相应地替换列和表名。好的。我会尝试这样做…我会给您一个更新关于我稍后的问题:)再次感谢:)