2008-10-23 160 views
0

如何在文本框中显示特定字段的所有值? 即。例如。当你运行SP时,你会得到3排。我想在文本框中显示(eg.empname) ,每个值用逗号分隔。 (ram,john,sita)。SQL Server报告服务

+0

把标题中的实际问题(而不是仅仅是sql报告服务)可能会导致更多的响应。 – ahockley 2008-11-18 21:18:40

回答

1

我前几天有过这个问题。如果您正在使用SQL 2005,则可以使用CROSS APPLY函数。

这里是一个示例;

Structure; 
ID TYPE TEXT 
1 1 Ram 
2 1 Jon 
3 2 Sita 
4 2 Joe 


Expecteed Output; 
ID TYPE TEXT 
1 1 Ram, Jon 
2 2 Sita, Joe 

Query; 
SELECT t.TYPE,LEFT(tl.txtlist,LEN(tl.txtlist)-1) 
FROM(SELECT DISTINCT TYPE FROM Table)t 
CROSS APPLY (SELECT TEXT + ',' 
      FROM Table 
      WHERE TYPE=t.TYPE 
      FOR XML PATH(''))tl(txtlist) 

希望这有助于:)

记住,你需要选择这个作为你的SP什么的,然后绑定,要在报表上的文本框中。祝你好运!

0

在2005年的交叉应用看起来像一个很好的解决方案(没有使用它自己)。我通常通过创建一个通过循环游标来连接值的UDF来解决这个问题。

0

的问题应该是 “如何连接行” http://databases.aspfaq.com/general/how-do-i-concatenate-strings-from-a-column-into-a-single-row.html

CROSS APPLY作品 或FOR XML是很好的选择VS光标

SELECT 
CustomerID, 
SalesOrderIDs = REPLACE( 
    ( 
     SELECT 
      SalesOrderID AS [data()] 
     FROM 
      Sales.SalesOrderHeader soh 
     WHERE 
      soh.CustomerID = c.CustomerID 
     ORDER BY 
      SalesOrderID 
     FOR XML PATH ('') 
    ), ' ', ',') 

FROM Sales.CustomerÇ ORDER BY 客户ID

您也可以使用数字/计数表