2014-02-26 69 views
0

在一個現有SSRS 2008 R2報告,我想有一個稱爲@hair參數的其中用戶SSRS 2008 R2,選擇1個或多個值或沒有上述

can see if the customer purchased one of the following items: 
1. hair spray, 
2. hair shampoo, 
3. Hair color, 
4. hair conditioner, or 
5. No hair product purchased. 

The table is called inventory and the values for the field called hairproduct are 
1. hair spray = 'HR', 
2. hair shampoo = 'HS', 
3. hair color = 'HC', 
4. Hair conditionier = 'HD', 
5. If hair product is not purchased hairproduct value is null. 

這是由於 庫存表包含諸如頭髮產品,眼睛產品,面部產品等列。如果購買了特定產品,該列將包含一個值。如果客戶購買了所有4種頭髮產品和3種眼部產品以及9種面部產品,則庫存表格將包含針對特定客戶的16列。

在參數窗口,我可以用下面有正確的價值觀在 選擇窗口中顯示:

SELECT DISTINCT IsNull(inventory.hairproduct,'') as hairid, 
CASE IsNull(inventory.hairproduct,'') 
WHEN 'HR' then 'hair spray' 
WHEN 'HS' then 'hair shampoo' 
WHEN 'HC' then 'Hair color' 
WHEN 'HC' then 'hair conditioner' 
WHEN '' then 'No hair product purchased' 
FROM Inventory 

**注意@hairproduct參數允許空值,並允許多個值。

但是,在ssrs 2008 r2報告的主要查詢中,我不確定如何更改以下 語句以選擇'No hair product purchased'。

目前的SELECT語句如下所示:

select customer_id,hairproduct 
from inventory where customer_id = @customerid 
hairproduct in (@hairproduct) 

基本上我需要改變主查詢相匹配的參數@hairproduct或數據集可能添加 這意味着要對具有一個或多個發製品 購買的客戶報告「沒有購買的護髮產品」的新參數或沒有。

因此,你可以告訴我和/或告訴我SQL將解決我的問題?

+0

你沒有,你有存儲,而不是使用這種長case語句來挑選產品的名稱,你可以簡單的使用該表來填充所有這些產品名稱的表格上爲產品參數下拉菜單並在參數屬性中選擇要在下拉菜單中顯示的值。 –

回答

0

這應做到:

select 
    customer_id, 
    isnull(hairproduct,'No hair product purchased') as hairproduct 
from inventory 
where 
    customer_id = @customerid 
    and isnull(hairproduct,'No hair product purchased') in (@hairproduct) 
+0

你能解釋你的答案嗎?當沒有產品時以及何時可以選擇幾種頭髮產品時,該選擇如何記錄?我是否需要修改用於參數下拉列表的數據集供用戶選擇? – user1816979

+0

對不起,我誤讀您的選擇查詢。如果您選擇「無頭髮產品購買」選項,現在它將與每個「NULL」頭髮產品值相匹配。 –