sqlserver 表值函数
一、单语句表值函数
ALTER function [dbo].[uf_get_jxc_da_sum](@dt char(8),@dt2 char(8))
RETURNS table
as
return(
select aa.outlet_id,aa.store_id as storespace_id,aa.supp_id as supplier_id,aa.aid, aa.q as curr_q, aa.ea as curr_ea , aa.ra as curr_ra,aa.dj_ea as curr_dj_ea,
quota_q
,quota_ea
,quota_ra
,quota_diff_ea
,quota_diff_ra
,entry_q
,entry_ea
,entry_ra
,transferin_q
,transferin_ea
,transferin_ra
,retquota_q
,retquota_ea
,retquota_ra
,retpurchase_q
,retpurchase_ea
,retpurchase_ra
,transferout_q
,transferout_ea
,transferout_ra
,pftloss_in_q
,pftloss_in_ea
,pftloss_in_ra
,pftloss_out_q
,pftloss_out_ea
,pftloss_out_ra
,inventory_in_q
,inventory_in_ea
,inventory_in_ra
,inventory_out_q
,inventory_out_ea
,inventory_out_ra
,movestock_q
,movestock_ea
,movestock_ra
,sale_q
,sale_ea
,sale_ra
,favour_ra
,fifo_adjust_in_q
,fifo_adjust_in_ea
,fifo_adjust_out_q
,fifo_adjust_out_ea
,adjust_in_ea
,adjust_in_ra
,adjust_out_ea
,adjust_out_ra
,retpurchase_dj_ea,
case left(aa.outlet_id,1) when 'D' then (isnull(q,0) - isnull(entry_q,0) + isnull(quota_q,0) - isnull(fifo_adjust_in_q,0) - isnull(pftloss_in_q,0) - isnull(inventory_in_q,0) + isnull(sale_q,0) - isnull(retquota_q,0) + isnull(retpurchase_q,0) + isnull(pftloss_out_q,0) + isnull(inventory_out_q,0) + isnull(fifo_adjust_out_q,0))
else (isnull(q,0) - isnull(entry_q,0) - isnull(quota_q,0) - isnull(fifo_adjust_in_q,0) - isnull(pftloss_in_q,0) - isnull(inventory_in_q,0) - isnull(transferin_q,0) + isnull(sale_q,0) + isnull(retquota_q,0) + isnull(retpurchase_q,0) + isnull(pftloss_out_q,0) + isnull(inventory_out_q,0) + isnull(fifo_adjust_out_q,0) + isnull(transferout_q,0))
end as last_q,
case left(aa.outlet_id,1) when 'D' then (isnull(ea,0) - isnull(entry_ea,0) + isnull(quota_ea,0) - isnull(fifo_adjust_in_ea,0) - isnull(pftloss_in_ea,0) - isnull(inventory_in_ea,0) - isnull(adjust_in_ea,0) + isnull(sale_ea,0) - isnull(retquota_ea,0) + isnull(retpurchase_ea,0) + isnull(pftloss_out_ea,0) + isnull(inventory_out_ea,0) + isnull(fifo_adjust_out_ea,0) + isnull(adjust_out_ea,0))
else (isnull(ea,0) - isnull(entry_ea,0) - isnull(quota_ea,0) - isnull(fifo_adjust_in_ea,0) - isnull(pftloss_in_ea,0) - isnull(inventory_in_ea,0) - isnull(adjust_in_ea,0) - isnull(transferin_ea,0) + isnull(sale_ea,0) + isnull(retquota_ea,0) + isnull(retpurchase_ea,0) + isnull(pftloss_out_ea,0) + isnull(inventory_out_ea,0) + isnull(fifo_adjust_out_ea,0) + isnull(adjust_out_ea,0) + isnull(transferout_ea,0))
end as last_ea,
case left(aa.outlet_id,1) when 'D' then (isnull(ra,0) - isnull(entry_ra,0) + isnull(quota_ra,0) - isnull(pftloss_in_ra,0) - isnull(inventory_in_ra,0) - isnull(adjust_in_ra,0) + isnull(sale_ra,0) + isnull(favour_ra,0) - isnull(retquota_ra,0) + isnull(retpurchase_ra,0) + isnull(pftloss_out_ra,0) + isnull(inventory_out_ra,0) + isnull(adjust_out_ra,0))
else (isnull(ra,0) - isnull(entry_ra,0) - isnull(quota_ra,0) - isnull(pftloss_in_ra,0) - isnull(inventory_in_ra,0) - isnull(adjust_in_ra,0) - isnull(transferin_ra,0) + isnull(sale_ra,0) + isnull(favour_ra,0) + isnull(retquota_ra,0) + isnull(retpurchase_ra,0) + isnull(pftloss_out_ra,0) + isnull(inventory_out_ra,0) + isnull(adjust_out_ra,0) + isnull(transferout_ra,0))
end as last_ra,
-- case left(aa.outlet_id,1) when 'D' then (isnull(dj_ea,0) - isnull(entry_ea,0) + isnull(quota_ea,0) - isnull(fifo_adjust_in_ea,0) - isnull(pftloss_in_ea,0) - isnull(inventory_in_ea,0) - isnull(adjust_in_ea,0) + isnull(sale_ea,0) - isnull(retquota_ea,0) + isnull(retpurchase_dj_ea,0) + isnull(pftloss_out_ea,0) + isnull(inventory_out_ea,0) + isnull(fifo_adjust_out_ea,0) + isnull(adjust_out_ea,0))
-- else (isnull(dj_ea,0) - isnull(entry_ea,0) - isnull(quota_ea,0) - isnull(fifo_adjust_in_ea,0) - isnull(pftloss_in_ea,0) - isnull(inventory_in_ea,0) - isnull(adjust_in_ea,0) - isnull(transferin_ea,0) + isnull(sale_ea,0) + isnull(retquota_ea,0) + isnull(retpurchase_ea,0) + isnull(pftloss_out_ea,0) + isnull(inventory_out_ea,0) + isnull(fifo_adjust_out_ea,0) + isnull(adjust_out_ea,0) + isnull(transferout_ea,0))
-- end as last_dj_ea
(isnull(dj_ea,0) - isnull(entry_ea,0) - isnull(fifo_adjust_in_ea,0) - isnull(pftloss_in_ea,0) - isnull(inventory_in_ea,0) - isnull(adjust_in_ea,0) + isnull(sale_ea,0) + isnull(retpurchase_dj_ea,0) + isnull(pftloss_out_ea,0) + isnull(inventory_out_ea,0) + isnull(fifo_adjust_out_ea,0) + isnull(adjust_out_ea,0)) as last_dj_ea
from
dbo.uf_get_stock_da_curr(@dt2) aa
left join
dbo.uf_get_jxc_sum(@dt,@dt2) bb
on
aa.outlet_id = bb.outlet_id
and aa.store_id = bb.storespace_id
and aa.supp_id = bb.supplier_id
and aa.aid = bb.aid
where left(aa.outlet_id,1)<>'8'
)
二、多语句表值函数
alter function [dbo].[f_getFjxx](@fjh varchar(50),@dt varchar(10))
returns @fjxx table (FJXXMX_FJH varchar(10) NULL,FJXXMX_HKGSDM varchar(10) NULL,FJXXMX_3ZM varchar(10) NULL,FJXXMX_ZDQFQZ float NULL,FJXXMX_ZDZW float NULL,FJXXMX_KGZW float NULL,FJXXMX_ZDYZ float NULL,FJXXMX_KGYZ float NULL,FJXXMX_XGRQ datetime NULL)
as
begin
declare @id int,
@max_xgrq varchar(10)
select @max_xgrq= max(CONVERT(varchar(10),fjxxmx_xgrq,120)) from ARP_FJXXMX where FJXXMX_FJH=@fjh and @dt>=CONVERT(varchar(10),fjxxmx_xgrq,120)
select @id= fjxxmx_id from ARP_FJXXMX where FJXXMX_FJH=@fjh and CONVERT(varchar(10),fjxxmx_xgrq,120)=@max_xgrq insert into @fjxx(FJXXMX_FJH,FJXXMX_HKGSDM,FJXXMX_3ZM,FJXXMX_ZDQFQZ,FJXXMX_ZDZW,FJXXMX_KGZW,FJXXMX_ZDYZ,FJXXMX_KGYZ,FJXXMX_XGRQ)
select FJXXMX_FJH,FJXXMX_HKGSDM,FJXXMX_3ZM,FJXXMX_ZDQFQZ,FJXXMX_ZDZW,FJXXMX_KGZW,FJXXMX_ZDYZ,FJXXMX_KGYZ,FJXXMX_XGRQ
from ARP_FJXXMX where FJXXMX_ID=@id
return
end
sqlserver 表值函数的更多相关文章
- sqlserver 表值函数与标量值函数
除了在我们常用的程序开发中要用到函数外,在sql语句中也常用到函数,不论哪种,思想都没有变,都是为了封装,可复用. 创建的方法和整体结构都大体相同,都少不了函数名,函数的形参,返回值等这些. 一.表值 ...
- Sqlserver表值函数来获取逗号分隔的ID
其功能为: 将字符串如'1,2,3,4,5,6' 拼接成SQL里面的id 1:使用: select * from Student where id IN( SELECT * FROM dbo.F_SP ...
- SQL Server中使用表值函数
函数有很多限制,不能使用动态语句,不能使用临时表等等...细看一下,直接写语句就行了,不用动态语句 insert into @re select id,parid,@I from videoclass ...
- SqlServer使用表值函数汇总
先谈谈需求,我们先创建一张表,脚本如下: create table Cost ( Id ,) primary key,--编号 CostTime date,--时间 Num int--销售额 ); ' ...
- sqlserver中的表值函数和标量值函数
顾名思义:表值函数返回的是表,而标量值函数可以返回基类型 一.表值函数 用户定义表值函数返回 table 数据类型.对于内联表值函数,没有函数主体:表是单个 SELECT 语句的结果集. 以下示例创建 ...
- SQLServer之修改表值函数
修改表值函数注意事项 更改先前通过执行 CREATE FUNCTION 语句创建的现有 Transact-SQL 或 CLR 函数,但不更改权限,也不影响任何相关的函数.存储过程或触发器. 不能用 A ...
- SQLServer之创建表值函数
表值函数创建注意事项 用户定义表值函数返回 table 数据类型. 对于内联表值函数,没有函数主体,表是单个 SELECT 语句的结果集. 表值函数主要用于数据计算出来返回结果集. 使用SSMS数据库 ...
- sqlserver自定义函数(标量值函数,表值函数)
用户自定义的函数有两类:表值函数.标量值函数. 表值函数:返回值是数据表的函数 调用方式 select b.* from tableA a accross apply Fun_BiaoZhiFun ...
- 用程序集编写clr表值函数:把正则表达式引入数据库中
正则表达式非常好,但在数据库中就是没有,但可以通过程序集方式扩展 先编写一个dll,标量函数很好写,表值函数麻烦一点 下面是C#代码 using System; using System.Data; ...
随机推荐
- [VC]strcpy memcpy memset区别与简介
strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#include <string.h> 功能:把src所指由NULL结束的字 ...
- 父子组件通信(vuex的方式)
转: https://blog.csdn.net/lzh5997/article/details/80407518 父子组件也可以通过vuex的进行来进行中转,其实vuex就类似与一个仓库,父组件把东 ...
- python_18_三元运算
# result=值1 if 条件 else 值2 如果条件为真:result=值1,否则result=值2. a,b,c=1,3,5 d=a if b>c else c print(d)
- Java中ArrayList的对象引用问题
前言事件起因是由于同事使用ArrayList的带参构造方法进行ArrayList对象复制,修改新的ArrayList对象中的元素(对象)的成员变量时也会修改原ArrayList中的元素(对象)的成员变 ...
- CUDA常见问题与解答
源 1.在SDK自带的例子程序中,发现SRC文件珜下有.cpp文件和.cu文件.这两种文件的关系和各自的作用是什么呀? 答:SDK自带例子中的.cpp文件主要是一些CPU端处理,或者是使用CPU计算对 ...
- js日期类型date
javascript语言核心包括Date()构造函数,用来创建表示日期和时间的函数 //返回当前的日期和时间 var today = new Date(); //2011年1月1日 ...
- 52shaidan.net
52shaidan.net 52gendan.net 朋友的域名
- 在windows上搭建镜像yum站的方法
在windows上搭建镜像yum站的方法(附bat脚本) 分类: 运维基本功,其他 方法一:支持rsync的网站 对于常用的centos.Ubuntu.等使用官方yum源在 http://mi ...
- Linux-git安装
基本操作 安装yum install git 生成SSH KEY :先cd ~/.ssh,在这个目录下输入ssh-keygen,一直回车就可以了,这个时候就会出现id_rsd.pub公钥和id_rsa ...
- LeetCode949-给定数字能组成的最大时间
问题: 给定一个由 4 位数字组成的数组,返回可以设置的符合 24 小时制的最大时间. 最小的 24 小时制时间是 00:00,而最大的是 23:59.从 00:00 (午夜)开始算起,过得越久,时间 ...