使用由存储过程填充的 temp table 中的列
Use column from temp table that is populated by stored proc
我知道这是错误的,不会起作用,但这是我正在尝试做的事情的想法。
我只想加入 [GetFinalCountByGroupId] sp 在内部使用的 table,但我不想加入,因为它使用的 table 有一些大的 varbinary 数据。当然 sp 仍在查询它,所以它可能与 join 而不是 sp 调用一样具有良好的性能。无论哪种方式,我都很好奇我是否可以先让它工作 - 如果不能,我会尝试加入。不管怎样,这里有一些代码:
CREATE PROCEDURE [dbo].[GetFinalRequests]
AS
BEGIN
SET NOCOUNT ON
DECLARE @FinalTable TABLE
(
FinalCount TINYINT
)
INSERT INTO @FinalTable
EXEC [dbo].[GetFinalCountByGroupId] [GroupId]
SELECT [Id]
,[GroupId]
,[SubmitBy]
,[InUse]
FROM [dbo].[Requests]
WHERE [InUse] = 1
AND @FinalTable.FinalCount > 0
END
编辑:这是执行此操作的结果...
必须声明标量变量“@FinalTable”。
这里有一个语法错误:
SELECT [Id]
,[GroupId]
,[SubmitBy]
,[InUse]
FROM [dbo].[Requests]
WHERE [InUse] = 1
AND @FinalTable.FinalCount > 0
您无法像 SQL
中那样访问 FinalCount
列。
我不知道临时 table 的目的,只是为了让它工作:
SELECT [Id]
,[GroupId]
,[SubmitBy]
,[InUse]
FROM [dbo].[Requests]
WHERE [InUse] = 1
AND (select sum(FinalCount) from @FinalTable) > 0
好的 - 我放弃了这个,只是做了一个连接:
SELECT [Id]
,r.[GroupId]
,[SubmitBy]
,[InUse]
FROM [dbo].[Requests] r
JOIN [dbo].[AgreementDocuments] d
ON r.[GroupId] = d.[GroupId]
WHERE r.[InUse] = 1
AND d.[Final] = 1
我知道这是错误的,不会起作用,但这是我正在尝试做的事情的想法。
我只想加入 [GetFinalCountByGroupId] sp 在内部使用的 table,但我不想加入,因为它使用的 table 有一些大的 varbinary 数据。当然 sp 仍在查询它,所以它可能与 join 而不是 sp 调用一样具有良好的性能。无论哪种方式,我都很好奇我是否可以先让它工作 - 如果不能,我会尝试加入。不管怎样,这里有一些代码:
CREATE PROCEDURE [dbo].[GetFinalRequests]
AS
BEGIN
SET NOCOUNT ON
DECLARE @FinalTable TABLE
(
FinalCount TINYINT
)
INSERT INTO @FinalTable
EXEC [dbo].[GetFinalCountByGroupId] [GroupId]
SELECT [Id]
,[GroupId]
,[SubmitBy]
,[InUse]
FROM [dbo].[Requests]
WHERE [InUse] = 1
AND @FinalTable.FinalCount > 0
END
编辑:这是执行此操作的结果... 必须声明标量变量“@FinalTable”。
这里有一个语法错误:
SELECT [Id]
,[GroupId]
,[SubmitBy]
,[InUse]
FROM [dbo].[Requests]
WHERE [InUse] = 1
AND @FinalTable.FinalCount > 0
您无法像 SQL
中那样访问 FinalCount
列。
我不知道临时 table 的目的,只是为了让它工作:
SELECT [Id]
,[GroupId]
,[SubmitBy]
,[InUse]
FROM [dbo].[Requests]
WHERE [InUse] = 1
AND (select sum(FinalCount) from @FinalTable) > 0
好的 - 我放弃了这个,只是做了一个连接:
SELECT [Id]
,r.[GroupId]
,[SubmitBy]
,[InUse]
FROM [dbo].[Requests] r
JOIN [dbo].[AgreementDocuments] d
ON r.[GroupId] = d.[GroupId]
WHERE r.[InUse] = 1
AND d.[Final] = 1