0

正常に動作する SQL Server 階層を作成しました。

ただし、10 進数の加算が必要な階層レベルのデータ型の処理に問題があります。

以下のこのクエリは、小数を追加して完全に機能することを試しました。

SELECT
    CAST('4.1' AS DEC(3,1)) + CAST('0.1' AS DEC(3,1)) ; --correct result: 4.02

ただし、私の CTE 階層クエリでは、以下に示すようなエラーが発生します。エラーは次のとおりだと思います:

 CAST(parent.[OWNER LEVEL] AS DEC(3,1)) + CAST(0.1 AS DEC(3,1)) AS [OWNER LEVEL],

エラー:

SQL エラー [240] [S0001]: 再帰クエリ "CTE1" の列 "OWNER LEVEL" のアンカーと再帰部分の間で型が一致しません。

コード:

WITH CTE1 AS 
( 
    SELECT 
        CAST('4.1' AS DEC(3,1)) as [OWNER LEVEL],
        [OWNER ID], 
        [OWNER NAME],
        CAST('4.2' AS DEC(3,1)) as [OWNED LEVEL],
        [OWNED ID], 
        [OWNED NAME]
    FROM 
        OWNER_OWNED
    
    UNION ALL
    
    SELECT 
        CAST(parent.[OWNER LEVEL] AS DEC(3,1)) + CAST(0.1 AS DEC(3,1)) AS [OWNER LEVEL],
        child.[OWNER ID], 
        child.[OWNER NAME],
        CAST(parent.[OWNED LEVEL] AS DEC(3,1)) + CAST(0.1 AS DEC(3,1)) AS [OWNED LEVEL],
        child.[OWNED ID], 
        child.[OWNED NAME]
    FROM 
        OWNER_OWNED child
    INNER JOIN 
        CTE1 parent ON parent.[OWNED ID] = child.[OWNER ID] 
)
SELECT * FROM CTE1
4

1 に答える 1