gpt4 book ai didi

sql - 如何在 while 循环中多次存储到临时表中?

转载 作者:行者123 更新时间:2023-12-01 11:04:15 27 4
gpt4 key购买 nike

我正在做一个内部连接,每次它都会将一个新列附加到我的表中

例如,我正在尝试这样做:

WHILE @Counter <= @MaxCount
BEGIN
SELECT @ParameterDefinitionID = ParameterDefinitionID FROM #CachedParameterDefinitionIDs WHERE RowNumber = @Counter
SELECT * INTO #ContactsWithPatientID FROM #ContactsWithPatientID INNER JOIN (SELECT Parameter2.ContactID AS 'Parameter2ContactID', Parameter2.Value AS FirstName FROM #CachedParameterValues Parameter2 WHERE ParameterDefinitionID = @ParameterDefinitionID) FirstNameTable ON #ContactsWithPatientID.ContactID = FirstNameTable.Parameter2ContactID
SET @Counter = @Counter + 1
END

它在第一次迭代时不起作用,因为:

There is already an object named '#ContactsWithPatientID' in the database.

我怎样才能让它发挥作用?有没有其他方法可以做到这一点?我这样做是因为我需要在查询中附加一定数量的行作为列。

最佳答案

先创建表

CREATE TABLE #ContactsWithPatientID (...)
WHILE @Counter <= @MaxCount
BEGIN
SELECT @ParameterDefinitionID = ParameterDefinitionID
FROM #CachedParameterDefinitionIDs
WHERE RowNumber = @Counter

INSERT #ContactsWithPatientID
SELECT *
FROM #ContactsWithPatientID
INNER JOIN
(SELECT Parameter2.ContactID AS 'Parameter2ContactID', Parameter2.Value AS FirstName
FROM #CachedParameterValues Parameter2
WHERE ParameterDefinitionID = @ParameterDefinitionID) FirstNameTable ON #ContactsWithPatientID.ContactID = FirstNameTable.Parameter2ContactID

SET @Counter = @Counter + 1
END

这几乎肯定也可以作为递归 CTE 一次性完成

关于sql - 如何在 while 循环中多次存储到临时表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7678338/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com