一般會使用這種方式是因為不同的資料集來自不同的資料來源 ( SQL、Oracle....),所以無法在資料集的 SQL 語法中使用 JOIN 方式把要的值合併在同一個資料集中。
查閱函數在 SSRS 中分類在其他函數這個類別中
- Lookup:從指定之運算式的資料集傳回值
- MultiLookup:從包含名稱 / 值組的資料集傳回第一組符合某一組名稱的值。
- LookupSet:從指定之運算式的資料集傳回一組值。
其中 Lookup 函數處理是一對一的關係,而且回傳是一個值。而 MultiLookup 雖然也是一對一,但是它的基礎是基於一個複選的欄位,因此它傳回的是一個一對一的集合。而 LookupSet 則是回傳一對多,只要符合條件的案例都會被傳回。
Lookup 函數
= Lookup ( 原始資料集鍵值欄位 , 參照資料集鍵值欄位 , 參照資料集回傳欄位 , " 參照資料集名稱 " )
例:透過 ProductID 欄位自 Product 資料集傳回產品名稱
= Lookup (Fields!ProductID.Value , Fields!ProductID.Value , Fields!Name.Value , "Product")
MultiLookup 函數
= Join ( MultiLookup ( Split ( 複選欄位 , ", " ) , 參照資料集鍵值欄位 , 參照資料集回傳欄位 , "參照資料集名稱" ) ), ", " )
例:透過複選的 CategoryList.Value 欄位,並利用 CategoryID 欄位自 Category 資料集傳回 CategoryName
= Join ( MultiLookup (Split (Fields!CategoryList.Value , ", ") , Fields!CategoryID.Value , Fields!CategoryName.Value , "Category" ) ) , ", " )
Lookup 函數
= Join ( LookupSet ( 原始資料集鍵值欄位 , 參照資料集鍵值欄位 , 參照資料集回傳欄位 , "參照資料集名稱" ) , ", " )
例:透過 TerritoryGroupID.Value 欄位,並利用 ID 欄位自 Stores 資料集傳回 StoreName
= Join ( LookupSet (Fields!TerritoryGroupID.Value , Fields!ID.Value , Fields!StoreName.Value , "Stores" ) , ", " )
參考:
Lookup(source_expression, destination_expression, result_expression, dataset)
http://technet.microsoft.com/zh-tw/library/ee210531.aspx
Multilookup(source_expression, destination_expression, result_expression, dataset)
http://technet.microsoft.com/zh-tw/library/ee210450.aspx
LookupSet(source_expression, destination_expression, result_expression, dataset)
http://technet.microsoft.com/zh-tw/library/ee240819.aspx
1 則留言:
感謝大大分享~~
終於解掉跨不同資料庫的問題了~~
張貼留言