我正在尝试使用内部SQL命令查询表并使用结果查询另一个但是我遇到了以下问题
" Msg 137,Level 16,State 1,Line 10 必须声明标量变量" @ ListofPropIDs"。"
任何帮助将不胜感激
DECLARE @ListofPropIDs TABLE(IDs VARCHAR(100));
INSERT INTO @ListofPropIDs
SELECT Id
FROM Property
WHERE CreatedBy = 'oliver@test.co.uk'
SELECT
COUNT (Digits)
FROM dbo.CallInfo
WHERE Digits = @ListofPropIDs;
GO
答案 0 :(得分:1)
DECLARE @ListofPropIDs TABLE(IDs VARCHAR(100));
INSERT INTO @ListofPropIDs
SELECT Id
FROM Property
WHERE CreatedBy = 'oliver@test.co.uk'
SELECT
COUNT (Digits)
FROM dbo.CallInfo C
INNER JOIN @ListofPropIDs s
on s.IDs = c.Digits
答案 1 :(得分:0)
不知道你想要达到什么目标,这样的事情应该有效,但可能不正确:
DECLARE @ListofPropIDs TABLE(IDs VARCHAR(100));
INSERT INTO @ListofPropIDs
SELECT Id
FROM Property
WHERE CreatedBy = 'oliver@test.co.uk'
SELECT
COUNT (Digits)
FROM dbo.CallInfo
WHERE Digits in (SELECT IDs FROM @ListofPropIDs)
您的原始查询正在尝试将表变量用作where子句的一部分,就好像它是一个不正确的列。
答案 2 :(得分:0)
@ListofPropIDs是一个表,你就像使用它一样使用它。
使用:
SELECT
COUNT (Digits)
FROM dbo.CallInfo
WHERE Digits IN ( SELECT IDs from @ListofPropIDs)
GO
答案 3 :(得分:0)
您不能将表格用作条件值
相反,您可以使用SQL: IN Condition
SELECT COUNT (Digits)
FROM dbo.CallInfo
WHERE Digits IN (Select Id From @ListofPropIDs)
或使用Inner Join
SELECT COUNT (Digits)
FROM dbo.CallInfo C
Inner Join @ListofPropIDs T On T.Id=C.Digits