我正在尝试获取每个员工的待处理金额总额。下面的查询工作正常:
SELECT SUM(amount)
FROM pending
WHERE MONTH < DATE_SUB(curdate() , INTERVAL 1 MONTH)
GROUP BY class
但是当我尝试将其添加为子查询时,它给出了以下错误:
1242 - Subquery returns more than 1 row
SELECT
(period_diff(date_format(now(), '%Y%m'),
date_format(MONTH, '%Y%m'))) AS months,
pending.amount,
pending.admission_numb,
pending.month,
staff.name,
staff.class, (
SELECT SUM(amount)
FROM pending
WHERE MONTH < DATE_SUB(curdate(), INTERVAL 1 MONTH)
GROUP BY class
)
FROM
pending JOIN staff
ON pending.admission_numb = staff.admission
GROUP BY admission
ORDER BY CAST( staff.class AS UNSIGNED ) , staff.class
任何帮助将不胜感激..
最佳答案
由于您的子查询返回不止一行(我希望它会为每个类返回一行),因此您需要在 from 子句中加入您的子查询:
SELECT
(period_diff(date_format(now(), '%Y%m'), date_format(MONTH, '%Y%m'))) AS months,
pending.amount,
pending.admission_numb,
pending.month,
staff.name,
staff.class,
sums.tot
FROM
pending JOIN staff ON pending.admission_numb = staff.admission
JOIN (
SELECT class, SUM(amount) as tot
FROM pending
WHERE MONTH < DATE_SUB(curdate(), INTERVAL 1 MONTH)
GROUP BY class
) sums on staff.class = sums.class
GROUP BY admission
ORDER BY CAST( staff.class AS UNSIGNED ) , staff.class
关于mysql - 1242 - 子查询在子查询中返回多于 1 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13553715/