SqlServer自定义函数Function中调用with as
SET QUOTED_IDENTIFIER ON
标识符可以由双引号分隔,而文字必须由单引号分隔
SET QUOTED_IDENTIFIER OFF
标识符不可加引号,且必须遵守所有 Transact-SQL 标识符规则。
SET NOCOUNT ON --返回受影响的行数
SET DATEFIRST 1 --定义日期周一开始
SET ANSI_NULLS ON
在与空值进行比较时,允许比较运算符返回 TRUE 或 FALSE
如果 ColumnA 包含 Null 值,则 ColumnA = NULL 之类的比较操作会返回 TRUE;
如果 ColumnA 除了包含 NULL 外还包含某些值,则这类比较操作将返回 FALSE。
比较计算结果为 NULL 的两个表达式也会返回 TRUE。
SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE。当 SET ANSI_NULLS 为 ON 时,
即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。
即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍会返回零行。
当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于
(<>) 比较运算符不遵从 SQL-92 标准。使用 WHERE
column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。使用 WHERE
column_name <> NULL 的 SELECT
语句返回列中包含非空值的行。此外,使用 WHERE column_name
<> XYZ_value 的 SELECT 语句返回所有不为
XYZ_value 也不为 NULL 的行。
CREATE FUNCTION dbo.GetTargetSummaryRefNew
(
@TargetGroupList dbo.GuidList READONLY
)RETURNS
@ TABLE(
TargetDetailID NVARCHAR(36)
,pTargetID NVARCHAR(36)
,pTargetName NVARCHAR(256)
,sTargetID NVARCHAR(36)
,sTargetName NVARCHAR(256)
,TargetGroupID NVARCHAR(36)
,pSummaryType NVARCHAR(64)
,ConversionValue DECIMAL(18,8)
,pToTargetID NVARCHAR(36)
,pIsCalculated INT
)
AS
BEGIN
WITH v_targetdetail(ID,ParentID,TargetID,TargetName,TargetGroupID,ConversionValue,ToTargetID,IsCalculated,IsLeaf,IDFullPath,IsDisplay)
AS
(SELECT p.ID
,p.ParentID
,ISNULL(p.TargetID,p.ID) TargetID
,p.Name TargetName
,p.GroupID TargetGroupID
,p.ConversionValue
,p.ToTargetID
,p.IsCalculated
,p.IsLeaf
,CAST(p.ID AS NVARCHAR(max)) IDFullPath
,p.IsDisplay
FROM ToBusinessTargetGroupDetail2(NOLOCK) p
INNER JOIN @TargetGroupList p1 ON p1.[GUID]=p.GroupID
WHERE p.ParentID IS NULL OR p.IsReported=0
UNION ALL
SELECT p.ID
,p.ParentID
,ISNULL(p.TargetID,p.ID) TargetID
,p.Name TargetName
,p1.TargetGroupID
,p.ConversionValue
,p.ToTargetID
,p.IsCalculated
,p.IsLeaf
,CAST(p1.IDFullPath+'.'+p.ID AS NVARCHAR(max)) IDFullPath
,p.IsDisplay
FROM ToBusinessTargetGroupDetail2(NOLOCK) p
INNER JOIN v_targetdetail p1 ON p1.ID=p.ParentID AND p1.TargetGroupID=p.GroupID
WHERE p.IsReported=1
)
,v_taregetsummaryref(TargetDetailID,pTargetID,pTargetName,TargetGroupID,sTargetID,sTargetName,ConversionValue,pToTargetID,pIsCalculated,sIsLeaf)
AS
(
SELECT p.ID
,p.TargetID pTargetID
,p.TargetName pTargetName
,p.TargetGroupID
,p1.TargetID sTargetID
,p1.TargetName sTargetName
,p1.ConversionValue
,p.ToTargetID
,p.IsCalculated
,p1.IsLeaf
FROM v_targetdetail p
INNER JOIN v_targetdetail p1 ON p1.TargetGroupID=p.TargetGroupID AND p1.IDFullPath LIKE p.IDFullPath+'%'
WHERE p.IsDisplay=1
) INSERT INTO @t(TargetDetailID,pTargetID,pTargetName,sTargetID,sTargetName,TargetGroupID,ConversionValue,pToTargetID,pIsCalculated)
SELECT TargetDetailID,pTargetID,pTargetName,sTargetID,sTargetName,TargetGroupID,ConversionValue,pToTargetID,pIsCalculated
FROM v_taregetsummaryref
UNION ALL
SELECT p1.TargetDetailID
,p1.pTargetID
,p1.pTargetName
,p2.ID sTargetID
,p2.Name sTargetName
,p1.TargetGroupID
,p1.ConversionValue
,p1.pToTargetID
,p1.pIsCalculated
FROM dbo.ToFinanceAccount(NOLOCK) p
INNER JOIN v_taregetsummaryref p1 ON p1.sTargetID=p.ID AND p1.sIsLeaf=1
INNER JOIN dbo.ToFinanceAccount p2 ON p2.FullPath LIKE p.FullPath+'\%' AND ISNULL(p2.IsDelete,0)=0
WHERE ISNULL(p.IsDelete,0)=0 AND p.IsLeaf!=1 UPDATE p
SET p.pSummaryType=ISNULL(p1.SummaryType,'Org&Date')
FROM @t p
LEFT JOIN ToBusinessTarget2 p1 ON p1.ID=p.pTargetID
RETURN
end
SqlServer自定义函数Function中调用with as的更多相关文章
- Sqlserver自定义函数Function
一.FUNCTION: 在sqlserver2008中有3中自定义函数:标量函数/内联表值函数/多语句表值函数,首先总结下他们语法的异同点: 同点:1.创建定义是一样的: ...
- 利用jQuery扩展接口为jQuery框架定义了两个自定义函数,然后调用这两个函数
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Dynamics 365 CE的插件/自定义工作流活动中调用Web API示例代码
微软动态CRM专家罗勇 ,回复325或者20190428可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 现在Web API越来越流行,有时候为了程序更加健壮,需要在插件 ...
- sqlserver自定义函数的创建与调用
sqlserver中有系统提供的函数,像avg.sum.getdate()等,用户还可以自定义函数. 用户自定义的函数包括:标量函数和表值函数,其中标量函数和系统函数的用法一样,表值函数根据主体的定义 ...
- SQLServer自定义函数简单演示
CREATE FUNCTION [ schema_name. ] function_name ( [ { @parameter_name [ AS ][ type_schema_name. ] par ...
- sqlserver自定义函数【粘】
用户定义自定义函数像内置函数一样返回标量值,也可以将结果集用表格变量返回 用户自定义函数的类型: 标量函数:返回一个标量值 表格值函数{内联表格值函数.多表格值函数}:返回行集(即返回多个值) 1. ...
- PowerShell自定义函数定义及调用
PowerShell是一种命令集,也有自己的语法定义及函数.本文主要介绍如何自定义powershell函数及如何调用,当初在写PowerShell自定义函数的时候查阅了很多资料都没找到如何调用自定义函 ...
- java mysql自定义函数UDF之调用c函数
正如sqlite可以定义自定义函数,它是通过API定义c函数的,不像其他,如这里的mysql.sqlite提供原生接口就可以方便的调用其他语言的方法,同样的mysql也支持调用其它语言的方法. goo ...
- SQL server 自定义函数FUNCTION的使用
原文链接:https://blog.csdn.net/lanxingbudui/article/details/81736402 前言: 在SQL server中不仅可以可以使用系统自带 ...
随机推荐
- 一本通1639Biorhythms
1639:Biorhythms 时间限制: 1000 ms 内存限制: 524288 KB [题目描述] 原题来自:POJ 1006 人生来就有三个生理周期,分别为体力.感情和智力周期 ...
- vue中的minix
minix 是个什么东西, 就是混合,把你混合给我 浅显表述就是 你说 : ‘我叫李四’, 我说 : ‘我叫张三’, 然后把你 混合给我, 就成了 我说 : ‘我叫张三我叫李四’, 所有解说都在例子里 ...
- 编译nginx平滑添加stream模块
1.操作背景 操作系统版本:CentOS Linux release (Core) nginx版本:1.13.4 nginx从1.9.0版本开始,新增了ngx_stream_core_module模块 ...
- Python:目录和文件的操作模块os.path和OS常用方法
1.目录和文件的操作模块os.path,在使用之前要先导入:import os.path.它主要有以下几个重要的功能函数: #!/user/bin/python #coding= utf-8 impo ...
- 51Nod 1287 加农炮 (线段树)
1287 加农炮 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 一个长度为M的正整数数组A,表示从左向右的地形高度 ...
- gym101350 c h m
C. Cheap Kangaroo time limit per test 1.0 s memory limit per test 256 MB input standard input output ...
- IntelliJ IDEA2017 修改缓存文件的路径
IDEA的缓存文件夹.IntelliJIdea2017.1,存放着IDEA的破解密码,各个项目的缓存,默认是在C盘的用户目录下,目前有1.5G大小.现在想要把它从C盘移出. 在IDEA的安装路径下中, ...
- 第一天进入博客这个神奇的领域 在此%%%erosun
第一条博客水一水 等会要找一下调博客模板 独立动手,丰衣足食
- (转)丢掉鼠标吧,使用最好用的eclipse快捷键
背景:eclipse作为自己经常使用的一款开发工具,熟练运用,能够达到事半功倍的效果.下面这篇文章总结了一些平时经常要使用的快捷键,十分的方便. 介绍Eclipse快捷键的文章很多,但大多都不详细,且 ...
- maven项目添加mysql的链接驱动
Maven项目中添加JDBC驱动 在pom.xml配置文件中添加: <dependency> <groupId>mysql</groupId> <arti ...