2017-05-26 74 views
1

此查询适用于一个服务器版本,但不适用于其他版本。SQL Server查询CTE父级子项,2012年在本地工作,但不在2012年直播,类型不匹配

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE PROCEDURE [dbo].[EventDetails] 
    @EventID AS VARCHAR(20) 
AS 
BEGIN 
    WITH CTE(CategoryID, FullCategName, OrderString) AS 
    (
     SELECT 
      CategoryID, 
      CAST(CategoryName AS VARCHAR(MAX)), 
      CAST(CAST(CategoryID AS CHAR(5)) AS VARCHAR(MAX)) OrderString 
     FROM 
      CategoryTbl 
     WHERE 
      ParentCategoryIDf is NULL 

     UNION ALL 

     SELECT 
      p.CategoryID, 
      CAST(c.FullCategName + ' >> ' + p.CategoryName AS VARCHAR(MAX)), 
      CAST(c.OrderString + CAST(p.CategoryID AS CHAR(5)) AS VARCHAR(MAX)) OrderString 
     FROM 
      CategoryTbl p 
     JOIN 
      CTE c ON c.CategoryID = p.ParentCategoryIDf 
    ) 
    SELECT 
     (SELECT TOP 1 i.ImageUrl 
     FROM ImageTbl i 
     WHERE i.ProductIDf = p.EventID) AS ImageURL, * 
    FROM 
     EventTbl p 
    LEFT JOIN 
     CTE c on c.CategoryID = p.CategoryIDf 
    WHERE 
     p.EventID = @EventID   
END 

enter image description here

enter image description here

+1

所以......我必须问......在'monsters_db'中有什么? ...这是怪物,不是吗? – SqlZim

+0

请注意,您的本地快速实例是SQL Server 2014中的每个版本号。 – SqlZim

回答

0

这可能是一个整理的问题,试试这个:

WITH CTE(CategoryID, FullCategName, OrderString) AS (
    SELECT 
     CategoryID 
    , cast(CategoryName as varchar(max)) Collate SQL_Latin1_General_CP1_CI_AS as FullCategName 
    , cast(cast(CategoryID as char(5)) as varchar(max)) Collate SQL_Latin1_General_CP1_CI_AS as OrderString 
    FROM CategoryTbl 
    WHERE ParentCategoryIDf is NULL 
    UNION ALL 
    SELECT 
     p.CategoryID 
    , cast(c.FullCategName + ' >> ' + p.CategoryName as varchar(max)) Collate SQL_Latin1_General_CP1_CI_AS 
    , cast(c.OrderString + cast(p.CategoryID as char(5)) as varchar(max)) Collate SQL_Latin1_General_CP1_CI_AS --OrderString 
    FROM CategoryTbl p 
    JOIN CTE c 
     ON c.CategoryID = p.ParentCategoryIDf 
) 

select 
    (select top 1 i.ImageUrl 
    from ImageTbl i 
    where i.ProductIDf=p.EventID) as ImageURL 
    , * 
    from EventTbl p 
    left join CTE c on c.CategoryID=p.CategoryIDf 
    where [email protected] 
end 

参考:

+0

感谢您的支持 –

相关问题