【发布时间】:2020-06-16 15:33:45
【问题描述】:
我有以下两张表(简体):
tblinvoices
id dateCreated
1 2020-01-02
2 2020-01-03
3 2020-01-03
4 2020-01-04
tblinvoicesLines
id invoiceId vatId vatAmount
1 4 7 35.50
2 4 8 15.75
3 4 7 11.50
3 5 7 10.05
4 6 7 11.04
我正在尝试在输出中汇总 vatAmount 结果,例如以下示例:
invoiceId listVatAmounts
4 47.00,15.75
5 10.05
6 11.04
我有以下 mysql 查询:
select
tblInvoices.id as invoiceId,
(
select group_concat(vatAmount) from tblinvoicesLines
where tblinvoicesLines.invoiceId=tblInvoices.id
group by tblinvoicesLines.vatId
) as listVatAmounts
from tblInvoices
order by id desc
limit 10
我希望 group by tblinvoicesLines.vatId 将这些值组合在一起,但 mysql 返回错误:
子查询返回多于 1 行
我可以做些什么来达到预期的效果?我希望通过子查询来实现。
【问题讨论】:
-
您似乎只需要一张桌子就可以做到这一点>
tblinvoicesLines -
'我希望通过子查询来实现' - 为什么?单独使用 group_Concat 是不合适的,因为您似乎是先按 vatid 对增值税金额求和
-
为什么按vatId分组
-
您需要一个聚合(每张发票的增值税列表以逗号分隔)(每张发票的增值税总额和增值税 ID)。这是两个步骤。
标签: mysql sql group-by group-concat