SQL组列,其中其他列相等

时间:2019-06-06 08:11:36

标签: sql join group-by

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

标识,名称,长度,宽度,数量,计划的

表数据如下

+-----------+-----------+---------+---------+------------+---------+
|   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

现在我遇到了如何将这些信息分组或合并以获取所需选择的问题。可能会对您有所帮助。.如果需要进一步的信息,请在评论中注明。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

select 

A1.Name,A1.Length,A1.Width,((A1.Quantity + A2.Quantity) -(A1.Planned+A2.Planned))

from `Table` AS A1, `Table` AS A2

where A1.Name = A2.Name and A1.Length = A2.Length and A1.Width = A2.Width

group by (whatever)

那么您要比较同一表格中的这些列吗?