【问题标题】:SSRS Column to contain list of many to many relationship itemsSSRS 列包含多对多关系项的列表
【发布时间】:2017-06-29 00:23:50
【问题描述】:

我正在寻找一份基本报告,在我的数据库中,我的主表中有一些项目代表硬件、软件应用程序等,这些项目与它所属的平台有多对多的关系。

如果一条记录有多个平台,我希望它在以逗号分隔的列中收听

数据库布局示例

所以基本上我想大致如下构造我的查询。

SELECT cat.CategoryName, sub.SubCategoryName, cur.Model, cur.Version, cur.Vendor, -- >pla.PlatformName,  <--
       cur.AvailableDate, cur.EndOfProduction, cur.EndOfSupport, dep.DepartmentName, 
       emp.FirstName + ' ' +emp.LastName AS 'Tech Owner', emp2.FirstName +' ' + emp2.LastName AS 'Tech Contact',
       cur.NumOfDevices, cur.UpgradeDuration, cur.FiscalConsideration
FROM
dbo.Currency Cur
INNER JOIN dbo.SubCategory sub
ON cur.SubCategoryId = sub.SubCategoryId
INNER JOIN dbo.Category cat
ON sub.CategoryId = cat.CategoryId
INNER JOIN dbo.Employee emp
ON cur.OwnerId = emp.EmployeeId
INNER JOIN dbo.Employee emp2
ON cur.ContactId= emp2.EmployeeId
INNER JOIN dbo.Department dep
ON cur.PortfolioOwnerId = dep.DepartmentId
LEFT JOIN dbo.Currency_Dependency cd
ON cur.CurrencyId = cd.CurrencyId
LEFT JOIN dbo.Currency_Affected ca
ON cur.CurrencyId = ca.CurrencyId
LEFT JOIN dbo.Currency_Platform cpla
ON cur.CurrencyId = cpla.CurrencyId
Left JOIN dbo.Platform pla
ON cpla.PlatformId = pla.PlatformId
GO

因此,如果我在该查询中有平台名称,我想将其构建为以逗号分隔的列表,但我不知道该怎么做。 如果有的话,你们中的一个人能指导我走上正确的道路吗?这样的方式。最终,我想通过参数或过滤器通过 SSRS(在 Visual Studio 2015 中使用 SSDT)构建报告,但我可以进一步研究它,因为我只是在学习它并正在阅读它。

提前谢谢你

【问题讨论】:

  • 这是一个很好的、写得很好的问题。但是您可以通过为当前查询提供一个示例结果集和一个显示您正在尝试完成的内容来改进它。这将有助于其他人重现您的数据。你是对的,现在这更像是一个 SQL 问题而不是一个 SSRS 问题。
  • 您的意思是要选择PlatforName 吗?或者您能否具体说明在这种情况下您的真正问题是什么?

标签: sql reporting-services sql-server-2012


【解决方案1】:

您可以在 SQL 或 SSRS 中将平台连接成逗号分隔的字符串。

已经有很多文章介绍了如何在SQL中做到这一点,只需搜索“For XML Path”即可。

要在 SSRS 中执行此操作,您可以使用 LookupSetJoin 的组合。

=Join(LookupSet(Fields!EmployeeId.Value, Fields!EmployeeId.Value, Fields!PlatformName.Value, "DataSet1"), ", ")

前两个参数是您要分组的字段。第三个是您将连接的平台值。第四个参数是您的数据集名称。

如果您需要使列表与众不同,则需要在报告中添加一些自定义代码来处理它。您可以将该函数放在JoinLookupSet 之前。

【讨论】:

  • 谢谢,我马上去看看!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
  • 2018-07-12
  • 2011-03-09
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
相关资源
最近更新 更多