我希望做一个基本的报告,在我的数据库中,我的主表中的项目代表硬件,软件应用程序等,与它所属的平台有很多关系。
如果记录有多个平台,我希望它在一个用逗号分隔的列中监听
数据库布局示例
所以基本上我想大致如下构建我的查询。
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
所以我在那个查询中有平台名称,我想把它结构化为用逗号分隔的那个列表,但是我不知道我会怎么做。 如果有的话,你们中的一个能够引导我走上正确的道路吗? 我希望能够通过基本的SQL查询开始,如果有的话这样的方式。最后,我想通过SSRS(在Visual Studio 2015中使用SSDT)通过参数或过滤器来构建报告,但我可以更深入地研究一下,因为我正在学习它并正在阅读它。< / p>
非常感谢你提前
答案 0 :(得分:1)
您可以在SQL或SSRS中将平台连接成逗号分隔的字符串。
有许多关于如何在SQL中执行此操作的文章,只需搜索“For XML Path”。
要在SSRS中执行此操作,您可以使用LookupSet
和Join
的组合。
=Join(LookupSet(Fields!EmployeeId.Value, Fields!EmployeeId.Value, Fields!PlatformName.Value, "DataSet1"), ", ")
前两个参数是您要分组的字段。第三个是您将连接的平台值。第四个参数是您的数据集名称。
如果您需要使列表不同,则需要在报告中添加一些自定义代码来处理该问题。您可以将该函数放在Join
之前的LookupSet
内。