2017-02-10 73 views
2

我期待做一個基本的報告,並在我的數據庫中,我有主表中的項目表示硬件,軟件應用程序等與多平臺的關係多屬於。SSRS列包含多對多關係項目列表

在一個記錄有多個平臺的情況下,我想它在逗號

數據庫排版範例

Database Diagram

所以分開列聽從本質上講,我想大致如下構建我的查詢。

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)通過參數或過濾器構建報告,但我可以更多地瞭解這一點,因爲我只是在學習它,並且正在閱讀它。

非常感謝你提前

+0

這是一個很好的,寫得很好的問題。但是,您可以通過爲當前查詢提供示例結果集,並顯示您正在嘗試完成的結果集來改進它。這將有助於其他人再現您的數據。 你說得對,這是一個比SSRS問題更多的SQL問題。 –

+0

你的意思是你想選擇'PlatforName'嗎?或者你能指定在這種情況下真正的問題是什麼? – LONG

回答

1

您可以連接的平臺整合到無論是在SQL或SSRS一個逗號分隔的字符串。

關於如何在SQL中執行此操作,只需搜索「For XML Path」即可。您可以使用LookupSetJoin的組合。

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

前兩個參數將是你想分組的字段。第三個是你將要連接的平臺值。第四個參數是您的數據集名稱。

如果您需要使列表不同,您需要在報告中添加一些自定義代碼來處理該列表。您可以在LookupSet之前將該函數放入Join

+0

謝謝,我很快就會看看這個! – David