2016-04-27 14 views
0

Ich habe eine SQL Server-Ansicht, die ich erstellt habe, die eine Liste von Unternehmen zeigt, und wenn sie einen Verkäufer zugewiesen haben, wird es enthalten sein, andernfalls wird der Wert für Verkäufer leer sein.SQL Server eindeutige Werte

Wenn ich die Abfrage für diese Ansicht ausführen, bekomme ich für die Unternehmen, die einen Verkäufer zugewiesen haben, 2 Datensätze, 1 mit einem leeren Verkäufer und einen anderen mit dem Verkäuferwert.

Was ich versuche zu erhalten ist eine Liste mit eindeutigen Werten für das Unternehmen und wenn sie einen Verkäufer zugewiesen haben, dann würde es diesen Wert enthalten und wenn das Unternehmen keinen hat, dann würde der Verkäufer leer bleiben .

Die erste Tabelle unten zeigt, was meine aktuelle Ausgabe mir gibt. Die zweite Tabelle unten zeigt ein Beispiel von dem, was ich versuche zu bekommen. Jede Hilfe wird geschätzt.


z.B.

Aktuell Ergebnis

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 

Erwartetes Ergebnis

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

Hier wird die SQL-Anweisung für die Ansicht ist, nicht sicher, ob es hilft oder nicht:

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') 

Hoffentlich das bietet mehr Informationen, um Feedback geben zu können. Vielen Dank.

+3

Könnten Sie bitte die Definition Ihrer Ansicht mit uns teilen? – Quassnoi

+0

'Wenn ich die Abfrage für diese Ansicht ausführen 'bitte geben Sie" die Abfrage ", wenn Sie Ihre Frage stellen, ist es wichtig, dies zu tun, sonst werden Sie sehr wahrscheinlich downvoted, auch können Sie Text mit fester Breite verwenden, um Ihre Ergebnisse zu demonstrieren und gewünscht Ergebnis, anstatt uns zu zwingen, auf Bilder zu klicken. * Beispiele zur Frage * –

Antwort

0

Ohne Schema-Details ist es schwer, Ihnen eine Antwort zu geben. Auf der Grundlage der angegebenen Bildschirmobergrenzen gehe ich davon aus, dass Sie versuchen, eine Aggregation durchzuführen, wobei eine nicht leere Sales Person zurückgegeben wird, falls vorhanden. Als Trick kann eingebaute Funktion MAX helfen.

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

Vielen Dank für diese Option !!! Dieser Trick funktionierte tatsächlich genau so, wie ich ihn zum Arbeiten brauchte und gab mir die Ausgabe, die ich für mein Skript benötigte. Mit freundlichen Grüßen, die Hilfe zu schätzen wissen. –

+0

Keine Sorgen @ R.Weiß. Würdest du bitte auch die Antwort akzeptieren, damit anderen klar ist, dass es eine Lösung für die Frage ist. – ydoow

Verwandte Themen