zer*_*law 2 sql sql-server group-by sum
我希望我的解释是正确的。
我有 2 张桌子,
第一个表 ( table1)
+------------+------+-------+-------+
| Date | Item | Block | Total |
+------------+------+-------+-------+
| 2017-01 | a1 | B1 | 10.0 |
| 2017-01 | a2 | B1 | 20.0 |
| 2017-01 | a3 | B2 | 30.0 |
| 2017-02 | a1 | B1 | 40.0 |
| 2017-02 | a2 | B1 | 50.0 |
| 2017-02 | a3 | B2 | 60.0 |
+------------+------+-------+-------+
Run Code Online (Sandbox Code Playgroud)
第二个表 ( table2)
+------------+------+
| Item Group | Item |
+------------+------+
| IG1 | a1 |
| IG1 | a2 |
| IG2 | a2 |
| IG2 | a3 |
+------------+------+
*Note that, one item group has multiple items.
The items may appear several time in different item groups.
Run Code Online (Sandbox Code Playgroud)
现在,我需要table1根据项目组 ( ) 对总数 ( table2) 求和,Date最后Block得出最终表:
+---------+------------+-------+-------+
| Date | Item Group | Block | Total |
+---------+------------+-------+-------+
| 2017-01 | IG1 | B1 | 30.0 |
| 2017-01 | IG2 | B1 | 20.0 |
| 2017-01 | IG1 | B2 | 0.0 |
| 2017-01 | IG2 | B2 | 30.0 |
+---------+------------+-------+-------+
Run Code Online (Sandbox Code Playgroud)
如何用SQL查询来实现这一点?
编辑:
好的。看来这是一件容易的事。我真丢脸。我不知道join并且Group By可以这样应用。SQL 真的很棒。这节省了大量的编码。
在这种情况下, Ajoin和 simplegroup by应该适合您:
select t1.Date, t2.ItemGroup, t1.Block, sum(t1.Total) Total
from table1 t1 join table2 t2 on t1.Item = t2.Item
group by t1.Date, t2.ItemGroup, t1.Block
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9408 次 |
| 最近记录: |