1

我有一個SQL服務器結果集,我需要使用SSRS rdl來顯示。 結果集ID,如:從rdl刪除動態生成的空白列

SpeakerId  Product Topic 
16    a  A 
16    a  B 
16    b  C 
16    a  D 
17    b  B 
17    c  C 
17    c  E 
18    a  B 
18    c  A 
19    c  C 

我需要顯示在基於產品在Excel中不同的標籤信息。 每個發言者將只有一行,主題將根據字母順序顯示在不同的coulmns中。 當我試圖在rdl中實現這個動態頁面和列時,我面臨以下問題: 如果產品和該選項卡中的揚聲器沒有其他產品和演講者的主題(在其他標籤)有。

請建議任何方式來解決這個問題。 我試圖使用Rank,但這個概念在這種情況下並沒有幫助,因爲我們在Excel中有多個頁面。

謝謝。

回答

0

在這種情況下,您需要確保爲所有發言者返回所有必需的主題,以便SSRS知道顯示主題。這樣做的

的一種方法是用PIVOT查詢,喜歡的東西:

select SpeakerId 
    , [A],[B],[C],[D],[E] 
from ResultSet 
pivot 
(
    max(Product) 
    for Topic in ([A],[B],[C],[D],[E]) 
) p 

SQL Fiddle with demo

您可以在此處看到每個發言者在結果中爲每個主題都有一列。

這意味着在報告中,您可以使用表格而不是矩陣來顯示數據。

未知主題數量?

如果您在編寫報告查詢之前不知道所需的主題,則可能仍會遇到問題 - 在這種情況下,我會建議您確保將主題表中的OUTER JOIN包括在內。

顯然這取決於您的數據。但是這很有用,因爲這意味着每個Speaker都會爲每個Topic設置一行,這就是您需要的內容......您可以使用Matrix在報告中顯示結果。

無論使用什麼方法,我們的目標是將數據集獲取到包含每個可能的揚聲器/主題組合的SSRS,即使主題的實際值爲NULL,因此報告總是爲每個揚聲器顯示相同的主題列。

+0

謝謝伊恩。但實際上在我的情況下,話題與產品有關。有些產品會有一些話題,其他一些產品會有其他話題。因此,我們無法在所有產品選項卡中擁有所有主題。如果你有這種情況,請提出建議。 – sjs