我有一個data_source從查詢返回2行,其中一個字符串帶有8chars,另一個帶有11chars。我真的確定其中一個字符串有8個字符,因爲我明確地把它放在where條件中(類似這樣的地方,其中name ='ftcc_ppp')。事實是報告服務正在添加一些額外的空白字符並且正在修復將字符串的長度設置爲max(不帶where條件的所有結果集的長度字符串)。Reporting Services - 使用UNION ALL更改字符串長度T-SQL
我想做一些過濾器,結果錯了,因爲字符串不是8字符,而是11字符(8 + 3blank)。
where條件是在子查詢中完成的,該查詢在該字段中有一行8字符,另一行有11個字符(ftcc_ppp和ftcc_ppp_lx)。
爲什麼報告服務就像這樣?任何解釋?
謝謝大家
編輯:查詢代碼:
BEGIN
DECLARE @dtDate DATETIME
DECLARE @lastDay DATE;
DECLARE @firstDay DATE;
DECLARE @currentDate DATE;
DECLARE @month_table AS TABLE(DATA DATE);
SET @dtDate = @DATA;
SET @lastDay = CAST(DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dtDate)+1,0)) AS DATE)
SET @firstDay = DATEADD(d,-DAY(@dtDate)+1,@dtDate);
SET @currentDate = @firstDay;
WHILE @currentDate <> dateadd(d,1,@lastDay)
BEGIN
PRINT @currentDate;
INSERT INTO @month_table VALUES(@currentDate);
SET @currentDate = dateadd(d,1,@currentDate);
END
SELECT * FROM (
SELECT DATA,motivo,SUM(total) AS total,CAST(campanha AS VARCHAR(11)) AS campanha,[TYPE]
FROM [Client].[dbo].[ftcc_ppp_motivo_nelegivel_totais]
GROUP BY DATA,motivo,campanha,[TYPE]
UNION ALL
SELECT DATA,motivo,0 AS total,CAST('ftcc_ppp' AS VARCHAR(11)) campanha,'LOP' AS [TYPE]
FROM @month_table
CROSS JOIN dbo.ftcc_ppp_motivo_nelegivel_keys
UNION ALL
SELECT DATA,motivo,0 AS total,CAST('ftcc_ppp' AS VARCHAR(11)) campanha,'ALOP' AS [TYPE]
FROM @month_table
CROSS JOIN dbo.ftcc_ppp_motivo_nelegivel_keys
UNION ALL
SELECT DATA,motivo,0 AS total,CAST('ftcc_ppp_lx' AS VARCHAR(11)) campanha,'CARD' AS [TYPE]
FROM @month_table
CROSS JOIN dbo.ftcc_ppp_motivo_nelegivel_keys
) xpto
WHERE campanha = 'ftcc_ppp'
END
這對我沒有意義。你能發佈一些代碼,特別是你的查詢嗎?我懷疑你的SQL查詢正在改變這個長度。將'LEN(FieldName)'添加到您的SQL查詢中以查看SQL是否認爲這些長度不同。我沒有看到SSRS將字符附加到字符串。 – 2012-01-05 21:32:38
是的,我可以提供完整的代碼。我現在檢測到的奇怪的事情是,從sqlserver返回的len總是8,但是如果我在報告服務表達式中使用len,它有時會給我8和其他時間11. 源代碼:[link](http:// pastebin .com/Ekq0qxh4) – MrKudz 2012-01-05 22:39:37
如果您將'SELECT * FROM'更改爲'SELECT xpto。*,rtrim(campanha)campanha_rt FROM',那麼SSRS中'campanha_rt'的長度是多少? – 2012-01-06 09:28:07