我有一个报告可以将多个订单号作为参数,并为每个订单号返回一个子报表。目前,我有一个首先运行的查询,用所有可能的订单号填充参数列表,您可以滚动并选择您想要的那些。我宁愿你只是输入#s的顺序,所有都用逗号分隔..我不知道如何设置它。有人可以帮忙吗?
答案 0 :(得分:1)
您可以将参数数据类型设置为文本,然后创建拆分字符串函数,然后用户可以输入用逗号分隔的所有值。
你的where子句看起来像这样 -
WHERE Parameter IN (SELECT * FROM dbo.Split_String( @Parameter, ','))
拆分字符串函数 -
SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO
CREATE FUNCTION [dbo].[Split_String]
(
@List nvarchar(max),
@token nvarchar(5)
)
RETURNS @RtnValue table
(
--Id int identity(1,1),
Value nvarchar(100)
)
AS
BEGIN
SET @List = RTRIM(LTRIM(@List))
IF @List <> ''
BEGIN
WHILE (CHARINDEX(@token, @List)>0)
BEGIN
INSERT INTO @RtnValue (value)
SELECT Value = LTRIM(RTRIM(SUBSTRING(@List,1,CHARINDEX(@token,@List)-1)))
SET @List = SUBSTRING(@List,CHARINDEX(@token,@List)+LEN(@token),LEN(@List))
END
INSERT INTO @RtnValue (Value)
SELECT Value = LTRIM(RTRIM(@List))
END
RETURN
END
GO
答案 1 :(得分:1)