zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    智能推荐算法演变及学习笔记(三):CTR预估模型综述
    从中国农业银行“雅典娜杯”数据挖掘大赛看金融行业数据分析与建模方法
    智能推荐算法演变及学习笔记(二):基于图模型的智能推荐(含知识图谱/图神经网络)
    (设计模式专题3)模板方法模式
    (设计模式专题2)策略模式
    (设计模式专题1)为什么要使用设计模式?
    关于macOS上常用操作命令(持续更新)
    记录下关于RabbitMQ常用知识点(持续更新)
    EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
    SpringCloud教程二:Ribbon(Finchley版)
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/6879461.html
Copyright © 2011-2022 走看看