SQL/PDW の while ループ内で動的クエリを実行しようとしています。このクエリは、最大/最小の日付と、ファクト テーブルからの日付の個別の数を示します。データベース内のすべてのスキーマに対してこれを実行する必要があります (すべてのスキーマは同じテーブル構造を持っています)。実行しようとしているクエリを以下に示します。
DECLARE @intCNT INT
SET @intCNT = 1
DECLARE @strSQL1 VARCHAR(1000)
DECLARE @strSQL2 VARCHAR(1000)
DECLARE @strSQL3 VARCHAR(100)
SET @strSQL1 = 'SELECT MAX(FT_DT) AS MAX_DT,
MIN(FT_DT) AS MIN_DT,
COUNT(DISTINCT FT_DT) AS DT_CNT
FROM '
SET @strSQL2 = CONCAT('(SELECT TABLE_SCHEMA
FROM
(SELECT ROW_NUMBER() OVER(ORDER BY TABLE_SCHEMA) AS ROW_NUM,
TABLE_SCHEMA
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = ''FT_TBL''
AND TABLE_SCHEMA LIKE ''F%'')T
WHERE ROW_NUM = ',@intCNT,')' )
SET @strSQL3 = '.FT_TBL'
EXEC (@strSQL1 + @strSQL2 + @strSQL3)
これを実行すると、次のエラーが発生します。
Msg 102, Level 15, State 1, Line 11
Incorrect syntax near '.'.
それは構文と関係がありますか?PDW インスタンスでこれを機能させたいと思います。SQL Server でも試してみましたが、同じエラーが発生します