设为首页 收藏本站
查看: 609|回复: 0

[经验分享] sql 取格式结算单数据

[复制链接]

尚未签到

发表于 2018-10-23 09:28:40 | 显示全部楼层 |阅读模式
  --存储
  USE [JSD]
  GO
  /****** Object:  StoredProcedure [dbo].[UPDATEJSDMX]    Script Date: 03/12/2015 09:38:37 ******/
  SET ANSI_NULLS ON
  GO
  SET QUOTED_IDENTIFIER ON
  GO
  ALTER Procedure [dbo].[UPDATEJSDMX]
  @YEARMONTH int
  as
  begin
  declare @sql varchar(1000)
  declare @YEARMONTH1 varchar(20)
  declare @s nvarchar(4000)
  set @YEARMONTH1=CAST(@YEARMONTH as Varchar(20))

  if exists (select * from sysobjects where>  drop table KL
  set @sql='select J.JLBH,substring(I.DEPTID,1,4) DEPTID,convert(char,getdate(),102) RQ'+
  +',W.NAME WLDW,S.NAME SPSB,I.JSKL,sum(I.XSJE+I.YHJE) XSJE '+
  +' from JXC.BFBHDD.JSD J,JXC.BFBHDD.JSDITEM I,JXC.BFBHDD.WLDW W,JXC.BFBHDD.SPSB S,JXC.BFBHDD.SPXX X'+
  +' where J.JLBH=I.JLBH'+
  +' and J.YEARMONTH='+@YEARMONTH1
  +' and J.WLDW=W.CODE'+
  +' and I.SP_ID=X.SP_ID'+
  +' and X.SB=S.SBID'+
  +' and I.JSKL>=0'+
  +' group by J.JLBH,substring(I.DEPTID,1,4),W.NAME,S.NAME,I.JSKL'
  set @sql='select * into KL from openquery(MSybase,'''+@sql+''')'
  --print(@sql)
  exec(@sql)

  if exists (select * from sysobjects where>  drop table KK
  set @sql='select J.JLBH,W.NAME WLDW,I.JSKKMC,I.JSKKJE'+
  +' from JXC.BFBHDD.JSD J,JXC.BFBHDD.JSDKKITEM I,JXC.BFBHDD.WLDW W'+
  +' where J.JLBH=I.JLBH'+
  +' and J.YEARMONTH='+@YEARMONTH1
  +' and J.WLDW=W.CODE'+
  +' group by J.JLBH,W.NAME,I.JSKKMC,I.JSKKJE'
  set @sql='select * into KK from openquery(MSybase,'''+@sql+''')'
  exec(@sql)

  if exists (select * from sysobjects where>  drop table KP
  set @sql='select JLBH,sum(JSJE_17+ZZSJE_17+JSJE_QT) KPJE from JXC.BFBHDD.JSD where YEARMONTH='+@YEARMONTH1+' group by JLBH order by JLBH'
  set @sql='select * into KP from openquery(MSybase,'''+@sql+''')'
  exec(@sql)

  if exists (select * from sysobjects where>  drop table KL_N
  select JLBH,DEPTID,WLDW,SPSB,KL=(stuff((select ';'+convert(varchar,JSKL)+ ';' + convert(varchar,XSJE) from KL where JLBH=a.JLBH for xml path('')),1,1,'')),HZJE=(select sum(XSJE) from KL where JLBH=a.JLBH) into KL_N from KL a group by JLBH,DEPTID,WLDW,SPSB

  if exists (select * from sysobjects where>  drop table KK_N
  select @s=isnull(@s+',','')+quotename([JSKKMC]) from kk group by[JSKKMC]
  exec('select [JLBH],[WLDW],'+@s+',[HJKK] into KK_N from (select *,[HJKK]=sum([JSKKJE]) over(partition by [JLBH],[WLDW]) from kk) a pivot (max([JSKKJE]) for [JSKKMC] in('+@s+'))b ')

  if exists (select * from sysobjects where>  drop table JSD
  select l.deptid,l.spsb,
  dbo.split(l.KL,';',1) as kl1, dbo.split(l.kl,';',2) as xs1,
  dbo.split(l.kl,';',3) as kl2,dbo.split(l.kl,';',4) as XS2,
  dbo.split(l.kl,';',5) as kl3,dbo.split(l.kl,';',6) as XS3,
  dbo.split(l.kl,';',7) as kl4,dbo.split(l.kl,';',8) as XS4,
  dbo.split(l.kl,';',9) as kl5,dbo.split(l.kl,';',10) as XS5,
  dbo.split(l.kl,';',11) as kl6,dbo.split(l.kl,';',12) as XS6,
  dbo.split(l.kl,';',13) as kl7,dbo.split(l.kl,';',14) as XS7,
  l.HZJE,K.*,P.KPJE,P.KPJE-K.HJKK SJJE,HZJE-KPJE MLE,(HZJE-KPJE)/HZJE MLL,dbo.L2U(P.KPJE-K.HJKK,1) RMB into JSD
  from  KL_N L,KK_N K,KP P
  where L.JLBH=K.JLBH
  and L.JLBH=P.JLBH
  end
  --程序调用
  exec updatejsdmx 201501
  --使用到FUNCTION
  USE [JSD]
  GO
  /****** Object:  UserDefinedFunction [dbo].[split]    Script Date: 03/12/2015 15:56:50 ******/
  SET ANSI_NULLS ON
  GO
  SET QUOTED_IDENTIFIER ON
  GO
  ALTER function [dbo].[split](
  @srcstr varchar(4000),
  @space varchar(50),
  @showindex int
  )returns varchar(4000)
  begin
  declare @pos1 int
  declare @pos2 int
  declare @index int
  declare @return varchar(4000)
  set @pos1 = 0
  set @pos2 = 0
  set @index = 0
  set @srcstr = @srcstr + @space
  while @index0
  set @return = substring(@srcstr,@pos1+1,@pos2-@pos1-1)
  else
  begin
  set @pos2 = len(@srcstr)
  set @return = ''
  end
  set @index = @index + 1
  end
  return(@return)
  end
  ----------------------------------
  USE [JSD]
  GO
  /****** Object:  UserDefinedFunction [dbo].[L2U]    Script Date: 03/12/2015 15:57:12 ******/
  SET ANSI_NULLS ON
  GO
  SET QUOTED_IDENTIFIER ON
  GO
  ALTER FUNCTION [dbo].[L2U](@n_LowerMoney numeric(15,2),@v_TransType int)
  RETURNS VARCHAR(200) AS
  BEGIN
  Declare @v_LowerStr VARCHAR(200) -- 小写金额
  Declare @v_UpperPart VARCHAR(200)
  Declare @v_UpperStr VARCHAR(200) -- 大写金额
  Declare @i_I int
  set @v_LowerStr = LTRIM(RTRIM(ROUND(@n_LowerMoney,2))) --四舍五入为指定的精度并删除数据左右空格
  set @i_I = 1
  set @v_UpperStr = ''
  while ( @i_I

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-625263-1-1.html 上篇帖子: Zabbix之一键安装 Server && agent [tar] 下篇帖子: 使用sql语句查询日期在一周内的数据
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表