我在存储过程中编写子查询以获取存储为varchar数据类型的Orders之间的值。当我运行查询时,它显示:SQL Server中的运算符BETWEEN
子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或当子查询用作表达式时,这是不允许的。
我GOOGLE了一下,发现问题,因为在子查询中返回多个值。
但在我的情况下,我需要所有在给定输入之间的值。谁能告诉我有什么办法可以做到这一点..
代码:
SELECT ROW_NUMBER()OVER(
ORDER BY po.id) AS SNo ,
pd.Copies AS Quantity,
pd.EstUnitPrice AS UniPrice,
pd.Copies*pd.EstUnitPrice AS Total,
(SELECT value
FROM BibContents
WHERE bibid=pd.BibId
AND sfld='a'
AND tagno='245') AS Title,
(SELECT value
FROM BibContents
WHERE bibid=pd.BibId
AND sfld='a'
AND tagno='020') AS 'ISSN/ISBN',
(SELECT value
FROM BibContents
WHERE bibid=pd.BibId
AND sfld='a'
AND tagno='100')AS Author
FROM [VibrantMas].[dbo].[PoDetails] AS pd
INNER JOIN Porders AS po ON po.Id=pd.PoId
WHERE po.No BETWEEN '000021' AND '000024'
告诉你什么,你如何格式化你的TSQL很好... – 2013-02-20 06:39:31
对不起,格式化查询错误。 – UniqueChar 2013-02-20 06:44:17