2016-04-27 91 views
0

我有一個SQL Server視圖,我創建了這個視圖,顯示了一個公司列表,如果他們有一個銷售人員分配,那麼它將被包含,否則銷售人員的值將是空白的。SQL Server的唯一值

當我運行鍼對該視圖的查詢,對於已經分配的,我得到2個,1一個空白的營業員,另一個營業員價值銷售人員的公司。

我想要得到的是一個具有公司唯一值的列表,如果他們有一個銷售人員分配,那麼它將包括該值,如果公司沒有一個,那麼銷售人員將留空。

下面的第一個表顯示了我的電流輸出給我。下面的第二張表格顯示了我試圖得到的一個例子。任何幫助表示讚賞。


例如,

當前結果

CustNO Company    SalesPerson 
ACM1 Acme Corp 
ACM1 Acme Corp   Bugs Bunny 
ABC1 ABC Company 
SSP1 Spacely Sprockets 
SSP1 Spacely Sprockets Daffy Duck 
SPN1 Springfield Nuclear 
SPN1 Springfield Nuclear Porky Pig 

預期結果

CustNO Company    SalesPerson 
ACM1 Acme Corp   Bugs Bunny 
ABC1 ABC Company 
SSP1 Spacely Sprockets Daffy Duck 
SPN1 Springfield Nuclear Porky Pig 

下面是該視圖的SQL語句,不知道這是否有助於與否:

Create View SalesList as (
    select distinct T1.CUSTNO as 'CustNo',   
      T1.COMPNAME as 'Company', 
      T1.SALESCODE as 'SalesID',    
      T2.EMPLNAME as 'Salesperson',  
      case 
       when T2.STATUS = 0 then 'Inactive' 
       when T2.STATUS = 1 then 'Active' 
      end as 'SalesStatus', 
      T2.SALESRATE as 'CommissionPct', 
      case 
       when T3.optfield = 'PARTNERAGENT' THEN T3.VALUE 
       else '' 
      end as 'AgentCode' , 
      case 
       when T3.OPTFIELD = 'PARTNERAGENT' THEN T4.VDESC 
       else '' 
      end as 'AgentName' 
    from Table1 as T1 
    left join Table2 as T2 on T1.SALESCODE = T2.SALESCODE 
    left join Table3 as T3 on T1.CUSTNO = T3.CUSTNO 
    left join Table4 as T4 on T3.VALUE = T4.VALUE 
    where T2.EMPLOYEECD = 'PARTNER') 

希望這一點提供更多信息以提供反饋。謝謝。

+3

請問您可以與我們分享您的觀點的定義嗎? – Quassnoi

+0

'當我對這個視圖運行查詢時'請在提問時提供「查詢」,這麼做很重要,否則您很可能會被降低投票率,也可以使用固定寬度文本來演示您的結果和期望結果而不是強迫我們點擊圖像。 *例子加入到質疑* –

回答

0

沒有架構的細節,很難給你一個答案。基於提供我會假設你想執行聚集,與非空Sales Person屏幕蓋如果任何返回。作爲一個技巧,內置功能MAX可能會有所幫助。

SELECT 
    CustNo, Company, MAX("Sales Person") AS "Sales Person" 
FROM 
    tableA 
GROUP BY CustNo, Company 
+0

非常感謝您對這個選項!這個訣竅實際上工作正是我需要它的工作,並給我我的腳本需要的輸出。真誠感謝您的幫助。 –

+0

不用擔心@ R.White。您是否也請接受答案,以便其他人可以清楚地知道這是問題的解決方案。 – ydoow