使用动态SQL语句实现Sbo的客户物料组销售二维分析-阿里云开发者社区

开发者社区> 科技小先锋> 正文

使用动态SQL语句实现Sbo的客户物料组销售二维分析

简介:
+关注继续查看
朋友希望我帮他完成在Sbo中实现按照不同的物料组和不同的客户之间的二维分析。
 
应该说实现方式还是多种的,最简单的实现方式就是使用动态化的存储过程的方式。研究了一下,实现的存储过程如下:
 
alter procedure up_TTLSaleInfo4CardAndItemGroup
 @sd smalldatetime, @ed smalldatetime
with Encryption
as
begin 
 declare @sql varchar(8000)
 select ItmsGrpCod, ItmsGrpNam, CardCode, sum(qty) qty, sum(amt) amt
 INTO #tmp
 FROM
  (
  select c.ItmsGrpCod, d.ItmsGrpNam, b.CardCode, sum(Quantity) qty, sum(LineTotal) amt
   FROM INV1 a 
   inner join OINV b on a.docEntry=b.docEntry
   inner join OITM c on a.ItemCode=c.ItemCode
   inner join OITB d on c.ItmsGrpCod=d.ItmsGrpCod
   WHERE b.docDate between IsNull(@sd, '2006-1-1') and IsNull(@ed, getdate())
   group by c.ItmsGrpCod, b.CardCode, d.ItmsGrpNam
  union all
  select c.ItmsGrpCod, d.ItmsGrpNam, b.CardCode, sum(Quantity) qty, sum(LineTotal) amt
   FROM RIN1 a 
   inner join ORIN b on a.docEntry=b.docEntry
   inner join OITM c on a.ItemCode=c.ItemCode
   inner join OITB d on c.ItmsGrpCod=d.ItmsGrpCod
   WHERE b.docDate between IsNull(@sd, '2006-1-1') and IsNull(@ed, getdate())
   group by c.ItmsGrpCod, b.CardCode, d.ItmsGrpNam
  ) t
 group by ItmsGrpCod, CardCode, ItmsGrpNam
 select @sql=isnull(@sql,'')+',['+cast(ItmsGrpNam  as nvarchar(10))+'(数量)]=sum(case ItmsGrpNam when '''+ ItmsGrpNam + ''' then qty else 0 end ),['+cast(ItmsGrpNam  as nvarchar(10))+'(金额)]=sum(case ItmsGrpNam when '''+ ItmsGrpNam + ''' then amt else 0 end )'
 from #tmp group by ItmsGrpNam
 select @sql = 'select a.CardCode 客户代码, b.CardName 客户名称' + @sql + ', sum(qty) 合计数量, sum(amt) 合计金额 from #tmp a inner join OCRD b on a.CardCode=b.CardCode group by a.CardCode, b.CardName'
-- print @sql
 exec ( @sql )
end
 
执行此存储过程的SQL Server语句如下:exec up_TTLSaleInfo4CardAndItemGroup '2008-6-1', '2008-6-2'
 
执行结果如下图所示,显然达到了预期目的。稍微做一下改变,就可以使用在Sbo的查询接口中。
点击看大图


本文转自foresun  51CTO博客,原文链接:http://blog.51cto.com/foresun/83639,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
clickhouse的使用和技巧,仅个人
centos 安装clickhouse   curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script.
4754 0
代理 XP”组件已作为此服务器安全配置的一部分被关闭。系统管理员可以使用 sp_configure 来启用“代理 XP”
新建维护计划的时候遇到下图的报错信息  标题: Microsoft SQL Server Management Studio------------------------------ “代理 XP”组件已作为此服务器安全配置的一部分被关闭。
1733 0
每周分享之JS数组的使用
    数组,一堆数字归为一组,就是一个数组,一堆对象放在一个组里,也是一个数组,概念很容易懂,说白了就是一个有限集合。     JS数组的语法无法两种,插入和移除(语法自行科普)。用处挺常见的,既然数组是一个集合,那么用到集合的地方就会用到数组,常见于页面上的表格数据渲染,一般的,异步加载的表格数据就是从数组来的,比如后台接口把一个数据表,格式化成JSON对象并返回,这个JSON对象其实就是一个数组,因为这个对象里有N个子对象,这个N个子对象都在一个大的JSON对象里,这个大的JSON对象就是一个集合,就是一个数组。
705 0
MySQL使用profile分析语句性能消耗
MySQL使用profile分析语句性能消耗 --查看profile是否开启mysql> show variables like '%profil%';+------------------------+-...
737 0
使用Spring AOP实现MySQL数据库读写分离案例分析
使用Spring AOP实现MySQL数据库读写分离案例分析 前言 分布式环境下数据库的读写分离策略是解决数据库读写性能瓶颈的一个关键解决方案,更是最大限度了提高了应用中读取 (Read)数据的速度和并发量。
1746 0
MySQL的explain语句分析
MySQL的explain语句分析 一、Explain概述 Mysql所提供的explain关键词是用于调优排患的一个神器,通过它可以分析查询语句的执行情况,DBA可以通过分析语句的执行结果对查询语句甚至表结构进行优化,例如添加索引,修改索引,使用覆盖索引等等。
1251 0
self的使用 | 手把手教你入门Python之五十二
通过 self.属性名 可以访问到这个对象的属性;通过 self.方法名() 可以调用这个对象的方法。
863 0
蚂蚁集团自研数据库 OceanBase 在中华财险业务系统投入使用
中华财险车险系统已经在全国 29 省成功上线蚂蚁集团自研数据库 OceanBase。
333 0
4571
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载