统计同一个客户下单的产品数量

snlixing 2020-08-14 11:46:38
请大神帮忙,按产品编号和合同号统计同一个客户下单的产品数量

有如下表:


需得到如下表:




...全文
873 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
小野马1209 2020-11-27
  • 打赏
  • 举报
回复
把楼上的改成动态列显示,因为看你的案例有多个【合同号】
--插入测试数据
select 'CNO-1' as [合同号],'A1' as '产品编号', 100 as [数量] into #Z
union all
select 'CNO-1' as [合同号],'A2' as '产品编号', 100 as [数量]
union all
select 'CNO-1' as [合同号],'A3' as '产品编号', 50 as [数量]
union all
select 'CNO-2' as [合同号],'A3' as '产品编号', 100 as [数量]
union all
select 'CNO-2' as [合同号],'A5' as '产品编号', 50 as [数量]
union all
select 'CNO-3' as [合同号],'A1' as '产品编号', 200 as [数量]
union all
select 'CNO-3' as [合同号],'A2' as '产品编号', 200 as [数量]
union all
select 'CNO-4' as [合同号],'A4' as '产品编号', 150 as [数量]
--插入测试数据完毕

SELECT * FROM #Z

--用SQL语句拼接,这样就可以实现动态列
DECLARE @name VARCHAR(max),@sql VARCHAR(max)
SET @name=stuff((SELECT DISTINCT ',[' + 合同号 + ']'  from #Z for xml PATH('')),1,1,'')

PRINT @name
SET @sql = 'SELECT * FROM #Z PIVOT(SUM([数量]) FOR [合同号] IN(' + @name + '))P'
PRINT @sql
EXEC( @sql)


drop table #Z
qq_39174826 2020-11-27
  • 打赏
  • 举报
回复
--插入测试数据
select 'CNO-1' as [合同号],'A1' as '产品编号', 100 as [数量] into #Z
union all
select 'CNO-1' as [合同号],'A2' as '产品编号', 100 as [数量]
union all
select 'CNO-1' as [合同号],'A3' as '产品编号', 50 as [数量]
union all
select 'CNO-2' as [合同号],'A3' as '产品编号', 100 as [数量]
union all
select 'CNO-2' as [合同号],'A5' as '产品编号', 50 as [数量]
union all
select 'CNO-3' as [合同号],'A1' as '产品编号', 200 as [数量]
union all
select 'CNO-3' as [合同号],'A2' as '产品编号', 200 as [数量]
union all
select 'CNO-4' as [合同号],'A4' as '产品编号', 150 as [数量]
--插入测试数据完毕

--开始取数据
select * from #Z
pivot(
sum([数量])
for [合同号]
in ([CNO-1],[CNO-2],[CNO-3],[CNO-4])
)p


drop table #Z
结果
qq_25073223 2020-08-25
  • 打赏
  • 举报
回复
这是一个行列转换的问题,请参阅这个里面行列转换的知识点 这个里面的例子和你的表结构非常的类似,有疑问及时沟通!
snlixing 2020-08-14
  • 打赏
  • 举报
回复
这个怎么写呢
snlixing 2020-08-14
  • 打赏
  • 举报
回复
大神们,这个sql怎么写呢
销售订单数据库管理系统 1、某销售商的订单系统需要如下信息: (1)每个供应商包含供应商编号、名称、地址、联系电话等信息。 (2)每种产品包含产品号、产品名称、单价,库存数等信息。 (3)每个供应商可供应多种产品,每种产品可由多个供应商供应。 (4)客户包含编号、姓名、通信地址、电话等信息。 2、其业务规则描述如下: (1)一个客户可下多个订单,每个订单只能由一个客户下。客户下单时有下单时间。 (2)一个订单由订单号,订单状态,订单总价和多个订单细节组成。 (3)每个订单细节对应一个产品描述。订单细节由细节编号,订购数量,金额等组成。 3、系统功能基本要求: A.使用存储过程完成以下查询统计 (1)按照一定条件查询商品基本信息,比如商品名称、价格范围等信息。 (2)根据客户姓名统计每个客户的订单总额。 B.定义一些视图 (1)按销量展示所有商品。 (2)显示订单量最多的客户或者产品。 C.使用存储过程和触发器模拟完成一个订单交易 订单交易主要包括客户注册,登录,查询商品(非注册用户和注册用户均可),订购商品(注意订购商品只面向注册用户,订购的过程中需对商品库存进行判断,注意订购后商品库存的变化,订单总额的计算),支付,取消订单等全过程。
 销售订单数据库管理系统 (1)某销售商的订单系统需要如下信息:  每个供应商包含供应商编号、名称、地址、联系电话等信息。  每种产品包含产品号、产品名称、单价,库存数等信息。  每个供应商可供应多种产品,每种产品可由多个供应商供应。  客户包含编号、姓名、通信地址、电话等信息。 其业务规则描述如下:  一个客户可下多个订单,每个订单只能由一个客户下。客户下单时有下单时间。  一个订单由订单号,订单状态,订单总价和多个订单细节组成。  每个订单细节对应一个产品描述。订单细节由细节编号,订购数量,金额等组成。 (2)系统功能基本要求: A. 使用存储过程完成以下查询统计  按照一定条件查询商品基本信息,比如商品名称、价格范围等信息。  根据客户姓名统计每个客户的订单总额。 B. 定义一些视图  按销量展示所有商品。  显示订单量最多的客户或者产品。 C. 使用存储过程和触发器模拟完成一个订单交易 订单交易主要包括客户注册,登录,查询商品(非注册用户和注册用户均可),订购商品(注意订购商品只面向注册用户,订购的过程中需对商品库存进行判断,注意订购后商品库存的变化,订单总额的计算),支付,取消订单等全过程。
  1、本系统采用B/S结构 易安装,运行速度快;   2、界面简洁,美观,实用,操作简单,容易上手;   3、系统可以支持多个帐套,各帐套的数据库是独立维护和备份的,每一个帐套支持多个员工使用;   4、自定义字段:可对字段名称修改,也可定义它的属性,也可新增字段以适合自己需求;   5、自定义模块:如果您不想要现有的某些模块,你可以关闭它。也可以添加新的适合你自己的模块;   6、快速筛选功能,关键字可在多个字段中搜索,每个列都设有方便的排序功能;   7、集成了“在线下单系统”和销售系统紧密结合,使您的客户可以从网站就能查看报价和下单;   8、统计功能:统计完全自动成,就算是你自己定义的模块也可以统计;   9、回收站功能:如果权限设置成半删除,这样删除的数据都在回收站,是可以恢复的;   防修改功能:如要防止业务员恶意修改,将其权限设成半修改,这样被修改的内容可恢复;   10、批处理:可批量处理一些数量,如:将选定客户分配给某一业务员;   11、每页显示的记录数可由用户选择,每页显示500条记录时,一般3秒左右可以显示数据;   12、记录直接编辑:像Excel那样,可直接编辑,也可双击打开窗口再修改,修改起来非常方便;   13、支持在线邮件群发;   14、支持在线短信群发; 主要功能:   1、采购系统(进)     ①供应商管理     ②采购单   2、销售系统(销)     ①客户管理系统:这是本软件的主角     ②竟争对手     ③产品管理     ④客户订单     ⑤注册清单:吸引客户在自己网站上注册,审核后可直接转到“客户管理系统”中。   3、仓库管理系统(存)     ①库存初始化     ②采购申请单     ③入库单     ④出库单     ⑤库存时查询     ⑥提前备货通知   4、人事管理(进)     ①员工管理   5、财务     ①财务帐号     ②收款     ③付款     ④内部转帐   6、OA     ①日程安排     ②通讯录     ③网络收藏夹     ④网络记事本     ⑤网络U盘     ⑥内部即时通     ⑦内部论坛

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧