1

我有以下查询(这是由表值函数返回的)

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 函数返回整数!我什至试图cast as integer在 rownumber 上做,但仍然没有帮助。有没有人遇到过同样的问题?ClinetHid - HierarchyId

4

1 回答 1

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() 函数,这可能会产生不同的结果。我怀疑这是您的问题。)

于 2011-11-03T18:53:45.410 回答