Row_number()在报告中不受支持?

时间:2011-11-03 17:54:13

标签: sql sql-server-2008 reporting-services ssrs-2008 row-number

我有以下查询(由tablevalued函数返回)

SELECT 
ROW_NUMBER() OVER (ORDER BY ClientHId)  AS RowNumber,
ClientHId,
FirstName,
LastName,
FROM Client

然后我在SSRS中填充数据集,如下所示:

select RowNumber,ClientHId,FirstName,LastName from fuctionClient

到目前为止一切顺利。现在,我正在尝试使用RowNumber列进行排序或显示。如果我尝试排序,SSRS错误说:"unsopported datatype exception"如果我只是尝试在tablix中显示它,则显示#error而不是rownumber。 Visual Studio intellisense表示只支持整数,字符串,字符...但是Row_Number函数返回整数!我甚至试图在rownumber上做cast as integer但仍然没有帮助。有没有人遇到过同样的问题? ClinetHid - HierarchyId

1 个答案:

答案 0 :(得分:0)

可怕的“无法重现。”

我刚创建了一个示例报表,其查询几乎与您的查询相同,包括创建表值UDF,然后从报表中调用它。然后我按行RowNumber字段排序了详细信息组,没有任何问题。我确保使用您在上面显示的名称调用RowNumber字段。

如何在UDF中声明该字段的返回数据类型?

CREATE FUNCTION [dbo].[JamieTestFunction]
(
)
RETURNS 
@Requests TABLE 
(
    -- Make sure your type below is correct:
    [RowNumber] int, 
    [ClientID] int,
    [ClientName] NVARCHAR(200)
)
AS
BEGIN
INSERT @Requests
SELECT 
    ROW_NUMBER() OVER (ORDER BY ClientID)  AS RowNumber,
    ClientID,
    ClientName
    FROM clients

    RETURN;
END

(另外,请确保无论您何时指定RowNumber使用Field!RowNumber.Value,而不是SSRS中内置的RowNumber()函数,这可能会产生不同的结果。我怀疑这是您的问题。)