2017-05-26 3 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

サポートありがとうございます –

関連する問題