SQL循环结果

时间:2009-10-13 16:04:48

标签: sql

我做了一个选择,它会带回一个ID列表。然后,我想为计算结果的每个ID调用另一个过程,因此我最终得到了一个结果列表。

我该怎么做?我需要某种循环,但我不擅长SQL。

编辑:Microsoft SQL 2008,纯粹在SQL中

3 个答案:

答案 0 :(得分:2)

编写一个用户定义的函数,该函数接收ID并返回计算结果,然后您可以使用如下查询获取每个ID的结果:

SELECT id, DatabaseYouUsed.dbo.functionYouWrote(id)
FROM DatabaseYouUsed.dbo.TableWithIDs

答案 1 :(得分:1)

您可以拥有一个调用select来获取ID的存储过程,在结果列表中使用游标并为每个ID调用另一个过程。全部存储过程。

答案 2 :(得分:1)

如果一行生成一个结果:

CREATE FUNCTION f(x int) RETURNS int AS BEGIN
    RETURN x * 2
END
GO
SELECT id, x, dbo.f(x) FROM my_table

如果一行可能会生成多个结果:

CREATE FUNCTION f(x int) RETURNS @r TABLE(result int) AS BEGIN
    INSERT INTO @r VALUES(x)
    INSERT INTO @r VALUES(x * 2)
    RETURN
END
GO
SELECT t.id, t.x, r.result FROM my_table t CROSS APPLY dbo.f(t.x) r