Mysql 如果没有筛选选项,如何编写sql语句,根据筛选显示数量结果并合并两个不同的列?

Mysql 如果没有筛选选项,如何编写sql语句,根据筛选显示数量结果并合并两个不同的列?,mysql,Mysql,桌子 我有一个过滤器,让用户选择是显示订购数量还是接收数量。当用户为订购数量选择过滤器时,结果将为30,否则如果选择接收数量,结果将为20,否则将返回50 SQL 目前,我将选择两者,并在html中使用if-else语句来显示数量的结果。如果按订购数量和接收数量过滤,则可以,但在需要显示所有数量时出现问题。也就是说,我需要将订购数量和接收数量合并为同一行的id select sum(qty_ordered) as order, sum(qty_received) as received from

桌子

我有一个过滤器,让用户选择是显示订购数量还是接收数量。当用户为订购数量选择过滤器时,结果将为30,否则如果选择接收数量,结果将为20,否则将返回50

SQL

目前,我将选择两者,并在html中使用if-else语句来显示数量的结果。如果按订购数量和接收数量过滤,则可以,但在需要显示所有数量时出现问题。也就是说,我需要将订购数量和接收数量合并为同一行的id

select sum(qty_ordered) as order, sum(qty_received) as received from table...

ps:只有在没有收到数量的情况下,才会对订购数量进行汇总。

您可以尝试通过
ID
进行汇总,并使用
sum
获得订购和收到数量的单个值:

|---------------------|------------------|
|          ID         |     quantity     |
|---------------------|------------------|
|          10         |         50       |               
|---------------------|------------------|
我在表达式中使用了一个
合并
技巧来计算总和。逻辑是,如果收到的数量存在,我们会计算它,即使订购的数量也可能存在。如果没有收到数量,我们才计算订购数量


我尝试过,但输出不正确,总数应为50,但我的将显示51。我尝试显示来自订购和接收的单个结果,它显示正确的输出,但汇总结果时自动增加一个。我不理解您的评论。我相信我的查询对于您向我们展示的数据是有效的。如果您有其他数据,那么也许您应该发布它。我有一个条件,即某些id将同时包含订购数量和已收数量,如果存在已收数量,则将根据已收数量进行汇总。您是说为了合计,如果给定记录同时包含订购数量和已收数量,使用收到的数量?您似乎没有主键,这可能会证明我有问题,对不起,我下次会改进我的问题。顺便说一句,问题解决了。
|---------------------|------------------|
|          ID         |     quantity     |
|---------------------|------------------|
|          10         |         50       |               
|---------------------|------------------|
SELECT
    ID,
    SUM(qty_ordered) AS qty_ordered,
    SUM(qty_received) AS qty_received,
    SUM(COALESCE(qty_received, qty_ordered)) AS qty_total
FROM yourTable
GROUP BY ID;

    ID  qty_ordered qty_received qty_total
1   10  60          20           50