我有一個非常有趣的問題。我有一個多選的下拉式SSRS報告。 下拉允許選擇多個值或所有值。 所有的值都不是問題。用IN和Like選擇
的問題是1或大於1級的選項
組合當我在下拉「AAA」中選擇它應該返回3個值:「AAA」,「AAA 1」,「AAA 2」
現在只返回1值。
問題:
如何使報表的工作就像一個什麼樣的?
The Drop down select
SELECT '(All)' AS team, '(All)' AS Descr
UNION ALL
SELECT 'AAA' , 'AAA'
UNION ALL
SELECT 'BBB' , 'BBB'
Table Mytable
ColumnA Varchar(5)
Values for ColumnA
'AAA'
'AAA 1'
'AAA 2'
'BBB'
'BBB 1'
'BBB 2'
SELECT * FROM Mytable
WHERE ColumnA IN (SELECT * FROM SplitListString(@Team, ',')))
Split function
CREATE FUNCTION [dbo].[SplitListString]
(@InputString NVARCHAR(max), @SplitChar CHAR(1))
RETURNS @ValuesList TABLE
(
param NVARCHAR(MAX)
)
AS
BEGIN
DECLARE @ListValue NVARCHAR(max)
DECLARE @TmpString NVARCHAR(max)
DECLARE @PosSeparator INT
DECLARE @EndValues BIT
SET @TmpString = LTRIM(RTRIM(@InputString));
SET @EndValues = 0
WHILE (@EndValues = 0) BEGIN
SET @PosSeparator = CHARINDEX(@SplitChar, @TmpString)
IF (@PosSeparator) > 1 BEGIN
SELECT @ListValue = LTRIM(RTRIM(SUBSTRING(@TmpString, 1, @PosSeparator -1)))
END
ELSE BEGIN
SELECT @ListValue = LTRIM(RTRIM(@TmpString))
SET @EndValues = 1
END
IF LEN(@ListValue) > 0 BEGIN
INSERT INTO @ValuesList
SELECT @ListValue
END
SET @TmpString = LTRIM(RTRIM(SUBSTRING(@TmpString, @PosSeparator + 1, LEN(@TmpString) - @PosSeparator)))
END
RETURN
END
你能後有點'SplitListString()'?此外,這可能是一個延伸,但是你的值不是全部3個字符,後面跟着一個數字? – Kermit
我可以但它不會有所作爲,因爲問題出在select和where子句中。分割字符串只創建一個以逗號分隔的表格 –
我添加了分割功能 –