2012-02-06 45 views
0

我有这个查询,我应该让它在SQL Azure上运行。SQL Azure,我应该删除'SELECT INTO',但如何使这个查询有效?

WITH RecursiveTable ([OrganizationUnitID]) 
       AS (SELECT OrganizationUnitID 
        FROM  OrganizationUnit AS ou , 
          OrganizationUnitDefinition oud 
        WHERE (ParentOrganizationUnitID IN (
           SELECT val 
           FROM  CustomSPLIT(@strOUs, ',')) 
           OR OrganizationUnitID IN (
           SELECT val 
           FROM  CustomSPLIT(@strOUs, ',')) 
          ) 
          AND (ou.OrganizationUnitDefinitionID = oud.OrganizationUnitDefinitionID) 
        UNION ALL 
        (SELECT ou.OrganizationUnitID 
        FROM OrganizationUnit AS ou 
          INNER JOIN RecursiveTable AS rt ON ou.ParentOrganizationUnitID = rt.OrganizationUnitID , 
          OrganizationUnitDefinition AS oud 
        WHERE ou.OrganizationUnitDefinitionID = oud.OrganizationUnitDefinitionID 
        ) 
       ) 
     SELECT DISTINCT     -- this 
       [OrganizationUnitID] -- won't work 
     INTO #tempEmployeeByOUIDs -- on azure 
     FROM RecursiveTable 

明知“SELECT INTO”不会在Azure上工作,我修改了它的下方,但它给我下面的

附近有语法错误RecursiveTable“。

CREATE TABLE #temp ([OrganizationUnitID] CHAR(36)) 
     --DROP TABLE #temp 
     INSERT INTO #temp 
     WITH RecursiveTable ([OrganizationUnitID]) 
        AS (SELECT OrganizationUnitID 
         FROM  OrganizationUnit AS ou , 
           OrganizationUnitDefinition oud 
         WHERE (ParentOrganizationUnitID IN (
            SELECT val 
            FROM  CustomSPLIT(@strOUs, ',')) 
            OR OrganizationUnitID IN (
            SELECT val 
            FROM  CustomSPLIT(@strOUs, ',')) 
           ) 
           AND (ou.OrganizationUnitDefinitionID = oud.OrganizationUnitDefinitionID) 
         UNION ALL 
         (SELECT ou.OrganizationUnitID 
         FROM OrganizationUnit AS ou 
           INNER JOIN RecursiveTable AS rt ON ou.ParentOrganizationUnitID = rt.OrganizationUnitID , 
           OrganizationUnitDefinition AS oud 
         WHERE ou.OrganizationUnitDefinitionID = oud.OrganizationUnitDefinitionID 
         ) 
        ) 
      SELECT DISTINCT 
        [OrganizationUnitID] 
      --INTO #tempEmployeeByOUIDs 
      FROM RecursiveTable 

做我错过了什么?

回答

1

尝试:

CREATE TABLE #temp ([OrganizationUnitID] CHAR(36)) 
     --DROP TABLE #temp 
     ;WITH RecursiveTable ([OrganizationUnitID]) 
        AS (SELECT OrganizationUnitID 
         FROM  OrganizationUnit AS ou , 
           OrganizationUnitDefinition oud 
         WHERE (ParentOrganizationUnitID IN (
            SELECT val 
            FROM  CustomSPLIT(@strOUs, ',')) 
            OR OrganizationUnitID IN (
            SELECT val 
            FROM  CustomSPLIT(@strOUs, ',')) 
           ) 
           AND (ou.OrganizationUnitDefinitionID = oud.OrganizationUnitDefinitionID) 
         UNION ALL 
         (SELECT ou.OrganizationUnitID 
         FROM OrganizationUnit AS ou 
           INNER JOIN RecursiveTable AS rt ON ou.ParentOrganizationUnitID = rt.OrganizationUnitID , 
           OrganizationUnitDefinition AS oud 
         WHERE ou.OrganizationUnitDefinitionID = oud.OrganizationUnitDefinitionID 
         ) 
        ) 
     INSERT INTO #temp 
      SELECT DISTINCT 
        [OrganizationUnitID] 
      --INTO #tempEmployeeByOUIDs 
      FROM RecursiveTable 

,介绍一个CTE必须声明的第一部分是,它具有的INSERT之前来的一部分WITH