While 循环结果在 Window
While Loop Result in On Window
当我执行此存储过程时,它将 return 5 windows,但我想在单个 window 中获取它而不将其转换为字符串查询。
我只是post简化版查询。我这里有不同的变量和逻辑,每次都会改变。因此,通过循环我管理了这个并将结果查询加载到 C# 中的数据集中,当前我在代码中获得多个数据集并合并该数据 tables。甚至循环次数不限于5次,每次都会根据用户在网页视图上的选择而不同。我只想在单个 table 中获得 While 循环结果而不将其转换为字符串查询。有解决办法请指教
DECLARE @intFlag INT, @str VARCHAR(MAX)
SET @intFlag = 1
WHILE (@intFlag <= 5)
BEGIN
SET @intFlag = @intFlag + 1
--Complex logical queries here that change every time according to
SELECT * FROM userHistories
END
GO
要求.
如果所有结果列都相同,则只能将其输出到一个输出中。如果您每次都从不同的逻辑中得到不同的结果,那么您需要更改这些结果(通过将缺失的列添加为默认值或空值)以便所有结果都相同。任何时候向任何查询添加新列时,它都必须在所有查询中匹配。
那么你有两个选择。如果您有一个预设的、不变的号码或对 运行 的查询,您可以执行类似
的操作
Select query 1
UNION ALL Select query 2
UNION ALL Select query 3
这将 return 一个结果集,但对于您想要的结果来说可能太简单了。另一种选择是创建一个临时 table 或 table 变量,然后更改您 运行 的每个查询以将其数据插入 table。最后select整个table到return的数据给你最后。它看起来像这样(使用 table 变量)
Declare @Results TABLE (field1 int, field2 string ....)
While ... BEGIN
SET @intFlag = @intFlag + 1
INSERT INTO @Results (field1, field2, ....)
Select field1, field2 .... FROM ....
End
--Now return all the data
Select * from @Results
根据提供的信息,我将使用一个临时文件 table 来存储 while 循环中生成的每个查询的结果。您甚至可以在 temp table 中使用增量值,以便您可以更轻松地识别结果来自哪个查询。您确实没有提供足够的细节来说明 while 循环中的可能性,所以我假设数据至少以相同的列数 and/or 数据类型输出。
其他信息可能会提供更好的答案,但这是我根据您描述的需要所做的。
当我执行此存储过程时,它将 return 5 windows,但我想在单个 window 中获取它而不将其转换为字符串查询。
我只是post简化版查询。我这里有不同的变量和逻辑,每次都会改变。因此,通过循环我管理了这个并将结果查询加载到 C# 中的数据集中,当前我在代码中获得多个数据集并合并该数据 tables。甚至循环次数不限于5次,每次都会根据用户在网页视图上的选择而不同。我只想在单个 table 中获得 While 循环结果而不将其转换为字符串查询。有解决办法请指教
DECLARE @intFlag INT, @str VARCHAR(MAX)
SET @intFlag = 1
WHILE (@intFlag <= 5)
BEGIN
SET @intFlag = @intFlag + 1
--Complex logical queries here that change every time according to
SELECT * FROM userHistories
END
GO
要求
如果所有结果列都相同,则只能将其输出到一个输出中。如果您每次都从不同的逻辑中得到不同的结果,那么您需要更改这些结果(通过将缺失的列添加为默认值或空值)以便所有结果都相同。任何时候向任何查询添加新列时,它都必须在所有查询中匹配。
那么你有两个选择。如果您有一个预设的、不变的号码或对 运行 的查询,您可以执行类似
的操作Select query 1
UNION ALL Select query 2
UNION ALL Select query 3
这将 return 一个结果集,但对于您想要的结果来说可能太简单了。另一种选择是创建一个临时 table 或 table 变量,然后更改您 运行 的每个查询以将其数据插入 table。最后select整个table到return的数据给你最后。它看起来像这样(使用 table 变量)
Declare @Results TABLE (field1 int, field2 string ....)
While ... BEGIN
SET @intFlag = @intFlag + 1
INSERT INTO @Results (field1, field2, ....)
Select field1, field2 .... FROM ....
End
--Now return all the data
Select * from @Results
根据提供的信息,我将使用一个临时文件 table 来存储 while 循环中生成的每个查询的结果。您甚至可以在 temp table 中使用增量值,以便您可以更轻松地识别结果来自哪个查询。您确实没有提供足够的细节来说明 while 循环中的可能性,所以我假设数据至少以相同的列数 and/or 数据类型输出。
其他信息可能会提供更好的答案,但这是我根据您描述的需要所做的。