大组变量 ID
large group of variable IDs
我有一个包含大量变量 ID 的工作查询。我想知道是否有办法从下面的查询中创建一个存储过程并传入一组 ID,而不是在我需要 运行 新查询时复制和粘贴每个 ID?
这是查询。 ID 一直在变化,所以我想找出一种更容易做到这一点的方法,但我运气不佳。
我考虑过在存储过程中使用游标并只传递每个 ID,但这似乎很麻烦且效率低下。
SELECT gm.geoId, T.number As surveyID, 0 as SpeciesCount
FROM (
VALUES (1994328036),(1994328037),(1994328038),(1994328039),(1994328040),(1994328041),(1994328042),(1994328043),
(1994328044),(1994328045),(1994328046),(1994328047),(1994328048),(1994328049),(1994328050),(1994328051),
(1994328052),(1994328053),(1994328054),(1994328055)
) AS T(number)
CROSS JOIN dbo.groupBiology gm
您可以像这样创建 table-valued function
(TVF):
CREATE FUNCTION tvf_GetIDs ()
RETURNS
@output TABLE ( data int )
AS
BEGIN
INSERT INTO @output (data) VALUES
(1994328036),(1994328037),(1994328038),(1994328039),
(1994328040),(1994328041),(1994328042),(1994328043),
(1994328044),(1994328045),(1994328046),(1994328047),
(1994328048),(1994328049),(1994328050),(1994328051),
(1994328052),(1994328053),(1994328054),(1994328055)
RETURN
END
GO
然后在需要 ID 的地方使用此功能,例如
SELECT *
FROM Customers AS c
INNER JOIN (SELECT * FROM tvf_GetIDs()) t ON c.CustID = t.data
您只需在 ID 更改时更新 TVF。
我有一个包含大量变量 ID 的工作查询。我想知道是否有办法从下面的查询中创建一个存储过程并传入一组 ID,而不是在我需要 运行 新查询时复制和粘贴每个 ID?
这是查询。 ID 一直在变化,所以我想找出一种更容易做到这一点的方法,但我运气不佳。
我考虑过在存储过程中使用游标并只传递每个 ID,但这似乎很麻烦且效率低下。
SELECT gm.geoId, T.number As surveyID, 0 as SpeciesCount
FROM (
VALUES (1994328036),(1994328037),(1994328038),(1994328039),(1994328040),(1994328041),(1994328042),(1994328043),
(1994328044),(1994328045),(1994328046),(1994328047),(1994328048),(1994328049),(1994328050),(1994328051),
(1994328052),(1994328053),(1994328054),(1994328055)
) AS T(number)
CROSS JOIN dbo.groupBiology gm
您可以像这样创建 table-valued function
(TVF):
CREATE FUNCTION tvf_GetIDs ()
RETURNS
@output TABLE ( data int )
AS
BEGIN
INSERT INTO @output (data) VALUES
(1994328036),(1994328037),(1994328038),(1994328039),
(1994328040),(1994328041),(1994328042),(1994328043),
(1994328044),(1994328045),(1994328046),(1994328047),
(1994328048),(1994328049),(1994328050),(1994328051),
(1994328052),(1994328053),(1994328054),(1994328055)
RETURN
END
GO
然后在需要 ID 的地方使用此功能,例如
SELECT *
FROM Customers AS c
INNER JOIN (SELECT * FROM tvf_GetIDs()) t ON c.CustID = t.data
您只需在 ID 更改时更新 TVF。