2015-08-03 140 views
0

我一直在尋找可能的答案來解決我的問題,但無法找到一個。讓我們假設我有2個數據集。 dsMediaServerData有兩列:id和channel。我有其他數據集(dsCatalogData),包含很多列,包括id和channel。我想過濾dsCatalogData以僅顯示那些不在dsMediaServerData中的記錄。SSRS來自一個數據集的數據不在另一個數據集

回答

1

我的建議是更新用於填充數據集的SQL查詢,以便排除重複的id /通道。

如果因爲數據集來自不同的數據庫而無法直接通過SQL來完成此操作,則可以使用參數完成此操作。

1)讓我們從第一個數據集(在您的示例中是dsMediaServerData)開始。由於您的示例顯示按2列進行篩選,但數據將通過單個參數傳遞,因此您需要創建一個將兩個數據組合在一起的新列。

SELECT Convert(VARCHAR(255), id) + '_' + Convert(VARCHAR(255), channel) as 'combined_columns_to_filter' 

2)現在創建一個新的參數(我們稱之爲@filter)。

  • 將數據類型設置爲文本
  • 選中「允許多個值」。
  • 打開「默認值」並選擇「從查詢中獲取值」。選擇dsMediaServerData數據集並選擇新列'combined_columns_to_filter'作爲值字段。
  • 將可見性設置爲「隱藏」,以便用戶不要嘗試與此參數交互。

3)現在更新第二個數據集。將@filter參數添加到WHERE子句。

WHERE Convert(VARCHAR(255), id) + '_' + Convert(VARCHAR(255), channel) NOT IN (@filter) 

這應該除去第一組數據,即使該數據集是在不同的數據庫中的所有記錄有效濾除第二個數據集。

+0

非常感謝Jesse!爲了讓這項工作和你的解決方案第一次工作,我已經敲了兩天腦袋! –

相關問題