SqlServer自訂函數Function中調用with as

來源:互聯網
上載者:User

標籤:div   包含   insert   使用   nan   inner   雙引號   定義   標準   

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 標準。使用 WHEREcolumn_name = NULL 的 SELECT 語句返回 column_name 中包含空值的行。使用 WHEREcolumn_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)ASBEGINWITH 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.IsDisplayFROM ToBusinessTargetGroupDetail2(NOLOCK) pINNER JOIN @TargetGroupList p1 ON p1.[GUID]=p.GroupIDWHERE p.ParentID IS NULL OR p.IsReported=0UNION ALLSELECT 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.IsDisplayFROM ToBusinessTargetGroupDetail2(NOLOCK) pINNER JOIN v_targetdetail p1 ON p1.ID=p.ParentID AND p1.TargetGroupID=p.GroupIDWHERE 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.IsLeafFROM v_targetdetail pINNER 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,pIsCalculatedFROM v_taregetsummaryrefUNION ALL SELECT  p1.TargetDetailID,p1.pTargetID,p1.pTargetName,p2.ID sTargetID,p2.Name sTargetName,p1.TargetGroupID,p1.ConversionValue,p1.pToTargetID,p1.pIsCalculatedFROM dbo.ToFinanceAccount(NOLOCK) pINNER JOIN v_taregetsummaryref p1 ON p1.sTargetID=p.ID AND p1.sIsLeaf=1INNER JOIN dbo.ToFinanceAccount p2 ON p2.FullPath LIKE p.FullPath+‘\%‘ AND ISNULL(p2.IsDelete,0)=0WHERE ISNULL(p.IsDelete,0)=0 AND p.IsLeaf!=1UPDATE p SET p.pSummaryType=ISNULL(p1.SummaryType,‘Org&Date‘)FROM @t pLEFT JOIN ToBusinessTarget2 p1 ON p1.ID=p.pTargetIDRETURNend

 

SqlServer自訂函數Function中調用with as

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.