![](/img/trans.png)
[英]How to pull data from one table based on a temp table SQL Server 2008 R2?
[英]How to create and view the results of a temp table from a hierarchical (recursive) query in SQL Server 2008 R2
美好的一天。
我嘗試從層次結構查詢中獲取結果之后生成一個臨時表,然后查看所有結果(均在同一查詢中)(因此遞歸查詢從表中獲取我想要的結果,然后CREATE TABLE
查詢顯示這些結果) )。
遞歸為我提供了我想要的結果,我遇到的問題是讓查詢顯示這些結果。 我正在嘗試在遞歸之后構建臨時表查詢。 但是,數據返回僅向我顯示了遞歸的結果。
感謝您的協助!
查詢:
WITH orgCode_hierarchy (ParentOrgCodeID, OrgCodeID, OrgCode, OrgName, OrgCodeSortOrder, LEVEL) AS
(
-- Initializing:
SELECT h_base.ParentOrgCodeID, h_base.OrgCodeID, h_base.OrgCode, h_base.OrgName, cast('::' + h_base.OrgCode + '::' AS VARCHAR (200)) AS OrgCodeSortOrder, 0 AS LEVEL
FROM L_OrgCode h_base
WHERE h_base.OrgCode is not null
UNION all
-- Executing recursive:
SELECT h_child.ParentOrgCodeID, h_child.OrgCodeID, h_child.OrgCode, h_child.OrgName, cast (ho.OrgCodeSortOrder + CASE WHEN left(h_child.OrgCode, 2) = '::' THEN '::' ELSE '' END + h_child.OrgCode + '::' AS VARCHAR (200)) AS OrgCodeSortOrder, LEVEL + 1 AS LEVEL
FROM L_OrgCode h_child
inner join orgCode_hierarchy ho on h_child.ParentOrgCodeID = ho.OrgCodeID
)
-- CTE:
SELECT DISTINCT ParentOrgCodeID, OrgCodeID, OrgCode, OrgName, OrgCodeSortOrder, LEVEL
FROM orgCode_hierarchy
WHERE OrgCode LIKE '2.2.1.1%'
-- ORDER BY 1
ORDER BY OrgCode, 1
--Create temp tbl for the name/org code search
CREATE TABLE #OrgCodesHier
(
OrgCodeID int,
OrgCode_Level int,
OrgName varchar(255),
OrgCode varchar(50),
ParentOrgCodeID varchar(50)
PRIMARY KEY (OrgCode)
)
INSERT INTO #OrgCodesHier (OrgCodeID, OrgCode_Level, OrgName, OrgCode, ParentOrgCodeID)
SELECT * FROM #OrgCodesHier
如果我正確理解...
--Create temp tbl for the name/org code search
CREATE TABLE #OrgCodesHier
(
OrgCodeID int,
OrgCode_Level int,
OrgName varchar(255),
OrgCode varchar(50),
ParentOrgCodeID varchar(50)
PRIMARY KEY (OrgCode)
)
;WITH orgCode_hierarchy (ParentOrgCodeID, OrgCodeID, OrgCode, OrgName, OrgCodeSortOrder, LEVEL) AS
(
-- Initializing:
SELECT h_base.ParentOrgCodeID, h_base.OrgCodeID, h_base.OrgCode, h_base.OrgName, cast('::' + h_base.OrgCode + '::' AS VARCHAR (200)) AS OrgCodeSortOrder, 0 AS LEVEL
FROM L_OrgCode h_base
WHERE h_base.OrgCode is not null
UNION all
-- Executing recursive:
SELECT h_child.ParentOrgCodeID, h_child.OrgCodeID, h_child.OrgCode, h_child.OrgName, cast (ho.OrgCodeSortOrder + CASE WHEN left(h_child.OrgCode, 2) = '::' THEN '::' ELSE '' END + h_child.OrgCode + '::' AS VARCHAR (200)) AS OrgCodeSortOrder, LEVEL + 1 AS LEVEL
FROM L_OrgCode h_child
inner join orgCode_hierarchy ho on h_child.ParentOrgCodeID = ho.OrgCodeID
)
-- CTE:
INSERT INTO #OrgCodesHier (ParentOrgCodeID,OrgCodeID,OrgCode,OrgName,OrgCode_Level)
SELECT DISTINCT ParentOrgCodeID, OrgCodeID, OrgCode, OrgName, LEVEL
FROM orgCode_hierarchy
WHERE OrgCode LIKE '2.2.1.1%'
-- ORDER BY 1
ORDER BY OrgCode, 1
SELECT * FROM #OrgCodesHier
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.