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