2013-12-17 174 views
1

我希望有人能幫助我。我有一份報告,可以通過單個銷售代表,區域銷售經理(有幾個銷售代表向他彙報)和「全能」經理進行管理,這些經理應該能夠查看所有銷售代表。如果用戶是salesrep,他應該只能看到分配給他的客戶;如果用戶是區域經理,他應該看到他的客戶以及分配給他管理的代表的所有其他客戶;而「全能」經理應該能夠看到每一個salerep和他們的所有客戶。SSRS 2008需要SQL語句幫助

我們有都有自己的SalesRep#,他們MSID價值,他們的區域經理代表#,和他們的用戶類型SalesRep表(SALESMAN_MSID) - 「S」表示他們是一個SalesRep的,「R」的意思他們是地區經理,「M」意味着他們是一位全職經理。下面是該查詢到目前爲止我有:

select distinct s.slsm_num, s.slsm_desc 
from salesman s 
where 
    s.slsm_num in (select distinct slsm_num 
        from salesman_msid 
        where slsm_mgr_id = (@SlsmnRealNum))  
    or (s.slsm_num = (@SlsmnRealNum)) 
order by s.slsm_desc 

這個偉大的工程,如果用戶是SalesRep的或註冊經理,但我無法弄清楚如何編寫SQL來獲取遍佈結果上班。參數「@SlsmnRealNum」中的值是其實際的salesrep#。

在SALESMAN_MSDI表中的數值是這樣:

Slsm_num MSID  Slsm_mgr_id  User_Type 
------------------------------------------------------ 
1379  ljones  1316    S 
1316  pcuday  1316    R 
1401  mmay        M 

,如果我的條款「或USER_TYPE =‘M’,我得到的所有代表中加回不管我測試作爲S的或R.

任何人都可以用SQL語句來獲得「M的」返回所有,但其他2幫助恢復,因爲他們應該

埃塔:這裏的新的SQL語句(可能不適合它在我的評論??) - 再次感謝@Sklivvz! SELECT DISTINCT S.SL SM_NUM,S.SLSM_DESC FROM SALESMAN S其中S.SLSM_NUM IN(SELECT DISTINCT M.slsm_num FROM SALESMAN_MSID中號 WHERE M.slsm_num =(@SlsmnRealNum)--Themselves OR(m.slsm_mgr_id =(@SlsmnRealNum)AND EXISTS - - 其下屬如果類型R (SELECT 1 FROM SALESMAN_MSID米 WHERE m.slsm_num =(@SlsmnRealNum) AND m.User_Type = 'R')) OR EXISTS(SELECT 1 - 人人如果M型 FROM SALESMAN_MSID中號 WHERE m.slsm_num =(@SlsmnRealNum) 和m.USER_TYPE = 'M'))爲了通過s.slsm_desc enter code here

回答

1

您需要subquer y表格區分類型:

SELECT DISTINCT slsm_num, slsm_desc 
    FROM salesman 
WHERE slsm_num = @SlsmnRealNum --Themselves 
    OR (slsm_mgr_id = @SlsmnRealNum AND EXISTS -- Their subordinates if type R 
     (
     SELECT 1 
      FROM salesman 
      WHERE slsm_num = @SlsmnRealNum 
      AND User_Type = 'R' 
     ) 
     ) 
    OR EXISTS (-- Everyone if type M 
     SELECT 1 
      FROM salesman 
     WHERE slsm_num = @SlsmnRealNum 
      AND User_Type = 'M' 
    ) 
+0

你是最棒的!謝謝! :)我不得不改變它一點,以得到我所需要的,因爲slsm_mgr_id和user_type在salesman_msid表上,其他信息來自推銷員表: –

+0

有什麼機會可以再次幫忙?如果user_type是M,那麼我只想返回user_types R或S的記錄。下面是我的查詢:SELECT DISTINCT S.SLSM_NUM,S.SLSM_DESC FROM SALESMAN S WHERE S.SLSM_NUM IN(SELECT DISTINCT M.slsm_num FROM SALESMAN_MSID M WHERE M .slsm_num = '9999' OR(m.slsm_mgr_id = '9999' AND EXISTS(SELECT 1 FROM SALESMAN_MSID米 WHERE m.slsm_num = '9999' AND m.User_Type = 'R') OR EXISTS(SELECT 1 - 每個人如果輸入M FROM SALESMAN_MSID M WHERE m.slsm_num ='9999' AND m.USER_TYPE ='M')order by s.slsm_desc –