我想動態生成查詢。我寫了一些條件,生成動態查詢
DECLARE @NewLineChar AS CHAR(2) = CHAR(13) + CHAR(10)
DECLARE @MyTable TABLE(
FormTypeID int NOT NULL,
TableName NVARCHAR(100),
pk NVARCHAR(50));
INSERT INTO @MyTable(FormTypeID, TableName, pk)
VALUES (0, N'Table1', 'ParentID'),
(5, N'Table2', 'ID'),
(5, N'Table3', 'ParentID'),
(5, N'Table4','ParentID'),
(3, N'Table5','ParentID')
DECLARE @SQLJoin varchar(8000) = 'LEFT JOIN (SELECT t.* FROM ParentTable t ' + @NewLineChar,
@pk nvarchar(100);
SELECT @SQLJoin += ' INNER JOIN ' + TableName +' ON ' + TableName + '.' + pk + ' = t.ID' + @NewLineChar FROM @MyTable
WHERE FormTypeID IN (0,5)
PRINT @SQLJoin + ')';
這是結果:
LEFT JOIN (SELECT t.* FROM ParentTable t
INNER JOIN Table1 ON Table1.ParentID = t.ID
INNER JOIN Table2 ON Table2.ID = t.ID
INNER JOIN Table3 ON Table3.ParentID = t.ID
INNER JOIN Table4 ON Table4.ParentID = t.ID
)
我希望它看起來像這樣以嵌套的聯接取決於FormTypeID:
LEFT JOIN (SELECT t.* FROM ParentTable t
INNER JOIN Table1 ON Table1.ParentID = t.ID)
LEFT JOIN (SELECT t.* FROM ParentTable t
INNER JOIN Table2 ON Table2.ID = t.ID
INNER JOIN Table3 ON Table3.ParentID = t.ID
INNER JOIN Table4 ON Table4.ParentID = t.ID
)
沒有爲你工作?那麼請關閉 –