首先,我创建了一个包含一列的内存表,并使用这些列值与另一个表进行内部联接。这样做时我收到此错误:
必须声明标量变量@暂时的.
谁能解释一下我哪里出了问题?
DECLARE @ID INT
Declare @Temporary Table
(
AccountID INT
)
DECLARE cur CURSOR FOR
SELECT DISTINCT ParentItem from ItemBillOfMaterial
OPEN cur
FETCH NEXT FROM cur INTO @ID;
WHILE @@FETCH_STATUS = 0
BEGIN
Insert into @Temporary Values(@ID)
FETCH NEXT FROM cur INTO @ID;
END
SELECT UOM FROM Item
INNER JOIN @Temporary
ON [email protected]
CLOSE cur;
DEALLOCATE cur;
在连接条件中引用表时必须使用别名
SELECT UOM FROM Item
INNER JOIN @Temporary t
ON Item.ItemID=t.AccountID
虽然这解决了您遇到的问题,但您不需要临时表或游标。该查询可以重写为:
SELECT UOM
FROM Item
WHERE ItemID IN (SELECT DISTINCT ParentItem FROM ItemBillOfMaterial)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)