mysql - 子查询在 group by 子句中返回多于 1 行 - MySQL

标签 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) 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')

它返回此错误:

enter image description here

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

enter image description here

刚刚添加的列交易计数 POS 是因为它在表中检测到类似的 ID。

我想要的交易计数 POS 的结果是这样的:

enter image description here

我使用不同的查询运行此命令,但它还需要在 select 语句中使用分组依据

这是查询:

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')

我认为我的 group by 语句在获取查询时遇到问题。任何人都可以帮助我吗? :(

最佳答案

我认为您想要的是从 GROUP BY 中删除 gndrevn.DOB 并在 WHERE 中添加 gndrevn.DOB = a.DOB。

关于mysql - 子查询在 group by 子句中返回多于 1 行 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44380690/

相关文章:

php - 我怎样才能拥有 HasAndBelongsToMany 表的外键并仍然在 CakePHP 中执行有效的查找查询?

sql - 如何在 sqldeveloper 中使用 IF else 条件检索最新实例

select - 关系代数中的算术除法

php - 处理大型(数千万行)数据集

mysql - yii2 : remove comma from createCommand

php - 如何通过ssh远程运行MySQL脚本文件?

javascript - .text函数不起作用

javascript - 如何仅在选择其他选择的选项时才显示选择?

mysql - SQL 查询速度慢且未使用索引

java - SQLite - 检查时间是否超过一个月前