我试图使用查询的正确总和查询我的查询的预期结果,但是,当它检测到相同的ID时,这些数字会不断累加。我想按日期获得小组。不幸的是,当我跑我的查询它得到一个错误说子查询返回多个1行子查询在group by子句中返回多于一行 - MySQL
这里是我的查询:
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,这是我的结果
列交易数POS只是增加了,因为它检测表相似的ID。
什么结果,我想为我的事务数POS是这样的:
我跑这跟不同的查询,但它也通过在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')
我觉得我的团队通过声明来得到查询有问题。任何人都可以帮助我呢? :(
你的查询是一个烂摊子。该错误信息是明确的:你的子查询返回的记录不止一个,这个需要修复 –