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的更多相关文章

  1. Sqlserver自定义函数Function

    一.FUNCTION: 在sqlserver2008中有3中自定义函数:标量函数/内联表值函数/多语句表值函数,首先总结下他们语法的异同点: 同点:1.创建定义是一样的:                ...

  2. 利用jQuery扩展接口为jQuery框架定义了两个自定义函数,然后调用这两个函数

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. Dynamics 365 CE的插件/自定义工作流活动中调用Web API示例代码

    微软动态CRM专家罗勇 ,回复325或者20190428可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 现在Web API越来越流行,有时候为了程序更加健壮,需要在插件 ...

  4. sqlserver自定义函数的创建与调用

    sqlserver中有系统提供的函数,像avg.sum.getdate()等,用户还可以自定义函数. 用户自定义的函数包括:标量函数和表值函数,其中标量函数和系统函数的用法一样,表值函数根据主体的定义 ...

  5. SQLServer自定义函数简单演示

    CREATE FUNCTION [ schema_name. ] function_name ( [ { @parameter_name [ AS ][ type_schema_name. ] par ...

  6. sqlserver自定义函数【粘】

     用户定义自定义函数像内置函数一样返回标量值,也可以将结果集用表格变量返回 用户自定义函数的类型: 标量函数:返回一个标量值 表格值函数{内联表格值函数.多表格值函数}:返回行集(即返回多个值) 1. ...

  7. PowerShell自定义函数定义及调用

    PowerShell是一种命令集,也有自己的语法定义及函数.本文主要介绍如何自定义powershell函数及如何调用,当初在写PowerShell自定义函数的时候查阅了很多资料都没找到如何调用自定义函 ...

  8. java mysql自定义函数UDF之调用c函数

    正如sqlite可以定义自定义函数,它是通过API定义c函数的,不像其他,如这里的mysql.sqlite提供原生接口就可以方便的调用其他语言的方法,同样的mysql也支持调用其它语言的方法. goo ...

  9. SQL server 自定义函数FUNCTION的使用

    原文链接:https://blog.csdn.net/lanxingbudui/article/details/81736402 前言:        在SQL server中不仅可以可以使用系统自带 ...

随机推荐

  1. shit aliyun

    shit aliyun 垃圾的 aliyun 什么鬼逻辑,怎么填写都不对,holy shit! 校验规则: // 对不起,昵称包含不可接受字符或被管理员屏蔽,请选择其它昵称 // 昵称的长度必须大于等 ...

  2. bower安装和使用

    bower的安装 1,首先在我的系统 安装 nodejs.因为我的系统是windows,还需要安装msysgit,注意图二中的选项   msysgit   Git setup 2,之后就可以用npm包 ...

  3. java虚拟机的内存划分

    为了提高运算效率,就对空间进行不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式. 一. 1.jvm的内存划分: 区域名称 作用 寄存器 给cpu使用,和我们开发无关 本地方法栈 jv ...

  4. 获取C++类成员虚函数地址

    1.GCC平台 GCC平台获取C++成员虚函数地址可使用如下方法[1]: class Base{ int i; public: virtual void f1(){ cout<<" ...

  5. Vue实例的生命周期(钩子函数)

    Vue实例的生命钩子总共有10个 先上官方图: 下面时一个vue实例定义钩子函数的例子: var app=new Vue({ el:'#app', beforeCreate:function(){ c ...

  6. Python模块调用方式详解

    Python模块调用方式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其 ...

  7. 函数和常用模块【day06】:shutil模块(四)

    本节内容 简书 模块详解 压缩解压 一.简述 我们在日常处理文件时,经常用到os模块,但是有的时候你会发现,像拷贝.删除.打包.压缩等文件操作,在os模块中没有对应的函数去操作,下面我们就来讲讲高级的 ...

  8. sql查询结果存入DataTable,然后从DataTable取数据

    public static DataTable SqlConnectionInformation() { string connstr = ConfigurationManager.Connectio ...

  9. iperf测试网络带宽

    http://blog.chinaaet.com/telantan/p/30901 https://boke.wsfnk.com/archives/288.html https://www.ibm.c ...

  10. Codeforces 923 C. Perfect Security

    http://codeforces.com/contest/923/problem/C Trie树 #include<cstdio> #include<iostream> us ...