sql - 如果存在具有不同值的列,SQL Server 如何使用组?
问题描述
先看看我的桌子
IDMutasi ItemID ItemCode ItemName Lokasi Seri Quantity
1 10 kode1 nama1 A1 001 50
2 10 kode1 nama1 A1 002 100
3 10 kode1 nama1 A2 001 50
3 10 kode1 nama1 A2 003 150
3 10 kode1 nama1 A2 003 150
4 11 kode2 nama2 A1 011 50
5 11 kode2 nama2 A1 011 150
6 12 kode3 nama3 A3 012 200
让我们说上表的 sql 是:
select * from tb_mutasi
我想让上面的表格变成这样:
ItemID ItemCode ItemName Lokasi Seri Quantity
10 kode1 nama1 A1 001 50
10 kode1 nama1 A1 002 100
10 kode1 nama1 A2 001 50
10 kode1 nama1 A2 003 300
11 kode2 nama2 A1 011 200
12 kode3 nama3 A3 012 200
上表中没有重复,如果 ItemCode、Lokasi 和 Seri 相同,则数量将增加。对于数量,我可以使用它,SUM
但是每当我使用时,无论我使用来自 Seri 还是 Lokasi 的组,group by
我总是会出错,我总是会得到这个结果。is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
知道该怎么做吗?
解决方案
这是根据您的描述和示例数据查询的工作组:
SELECT
ItemID,
ItemCode,
ItemName,
Lokasi,
Seri,
SUM(Quantity) AS Quantity
FROM tb_mutasi
GROUP BY
ItemID,
ItemCode,
ItemName,
Lokasi,
Seri;
SQL Server 中的要求GROUP BY
是出现在 select 子句中的每一列也出现在GROUP BY
子句中,或者是一个聚合。因此,我们可以选择SUM(Quantity)
,因为它是一个聚合,即使Quantity
它没有出现在GROUP BY
.
推荐阅读
- python - 如何查询集继承模型django?
- python - 导出 anaconda 环境的最佳方法,但还包括定制包?
- javascript - PHP Cookies(如果有的话)
- python - 如何按多列分组以在熊猫数据框中列出
- sql-server - 将 SQL 查询转换为红移
- database - 为什么像 Snowflake 和 Redshift 这样的列式数据库不能更改列顺序?
- scala - 如何将地图中一个元素的内容移动到Scala中的另一个元素
- git - 拉同一分支时没有看到同事 git 更改?
- c# - 实体框架中的外键问题一对多
- javascript - Adminlte div 切换以隐藏水平