我有创建一个SQL Server表值函数由我,我已经粘贴下面SQL服务器:表值函数不与子查询
CREATE FUNCTION [dbo].[getTableFromString]
(
@String AS nvarchar(max)
)
RETURNS @ReturnTable TABLE (StringValues nvarchar(10) )
AS begin
if (SELECT CHARINDEX(',', @String)) = 0
begin
insert into @ReturnTable (StringValues) values (subString(@String,1,len(@String)));
end
else
begin
while (SELECT CHARINDEX(',', @String)) > 0
begin
insert into @ReturnTable (StringValues) values (subString(@String,1,CHARINDEX(',', @String)-1));
set @String = subString(@String,CHARINDEX(',', @String)+1,len(@String));
if (SELECT CHARINDEX(',', @String)) = 0
begin
insert into @ReturnTable (StringValues) values (subString(@String,1,len(@String)));
end
end
end
return ;
end
创建脚本,我使用此功能工作像下面
Select sum(NetSales)
from vwxsalesall
where Company = 'rs'
and storecode = (select cPrimaryStockRoomCode from CompanyMaster.CompanyProfileDetail where cCompanyNo = 'rs' and cSecondaryStockRoomCode = 'R01B')
and trandate >= '2012-01-01'
and trandate <= '2012-01-31'
and (
brand in (
select StringValues from dbo.getTableFromString(
select vIncludedBrandCodes
from StockRoomTargetData.MonthlyTarget
where cCompanyNo = 'rs'
and cSecondaryStockRoomCode = 'R01B'
and nYear = 2012
and nMonth = 8
)
)
)
不幸的是,我得到这个错误
消息156,15级,状态1,10号线
关键字'select'附近的语法不正确。
消息102,级别15,状态1,行16
附近有语法错误 ')'。
请帮我
你需要把'选择vIncludedBrandCodes ...'子查询到括号来表示到SQL Server,这是实际上是一个子查询。 – 2012-08-08 12:06:22
请你能多解释一下吗? – Prabhakantha 2012-08-08 13:07:48
请看我的答案。 – 2012-08-08 13:21:25