首页 > 解决方案 > 其他列相等的 SQL 组列

问题描述

我正在尝试从数据库中选择一些信息。我得到一个包含如下列的数据库:

标识、名称、长度、宽度、数量、计划

表数据如下

+-----------+-----------+---------+---------+------------+---------+
|   Ident   |   Name    | Length  | Width   | Quantity   | Planned |
+-----------+-----------+---------+---------+------------+---------+
|   12345   | Name1     | 1500    |    1000 |         20 |       5 |
|  23456    | Name1     | 1500    |    1000 |         30 |      13 |
|  34567    | Name1     | 2500    |    1000 |         10 |       2 |
|  45678    | Name1     | 2500    |    1000 |         10 |       4 |
|  56789    | Name1     | 1500    |    1200 |         20 |       3 |
+-----------+-----------+---------+---------+------------+---------+

我想要的结果是对“名称、长度和宽度”相等的行进行分组,将“数量”相加并减去“计划”之和,例如:

- Name1,1500,1000,32 --- (32 because (20+30)-(5+13))
- Name1,2500,1000,14 --- (14 because (10+10)-(2+4)))
- Name1,1500,1200,17

现在我遇到了如何分组或加入这些信息以获得所需选择的问题。可能是一些你可以帮助我..如果需要进一步的信息,请写在评论中。

标签: sqljoingroup-by

解决方案


您可以通过对表格进行分组并减去 和 的总和来实现QuantityPlanned

select
     Name
    ,Length
    ,Width
    ,sum(Quantity) - sum(Planned)
from yourTable
group by Name,Length,Width

推荐阅读