2017-05-18 1 views
0

Ich suche, 'wenn sonst' Bedingung innerhalb einer Where-Klausel hinzuzufügen, aber nicht sicher, wie würde ich es tun. Mit Blick auf die folgende Tabelle, ich versuche, die Ergebnisse zu filtern, wo die Abfrage alle Produktlinie Subtypen extrahieren und eine Bedingung nur dann hinzufügen würde, wenn die [Produktlinie Subtyp] = 'Marine'. Wenn es Marine ist, sollte es nur zwei Kombinationen von Abschnitt und Gewinncode berücksichtigen, während andere Kombinationen weggelassen werden.Bedingung innerhalb Where Klausel

Kombination 1 Wenn Prod Linie Subtype = Meer dann Section = Inland und Profit-Code = Builders

Kombination 2 Wenn Prod Linie Subtype = Meer dann Section = Ozean und Profit-Code = Stock

Meine tatsächliche Tabelle hat größere Sätze von eindeutigen Kombinationen als in der folgenden Tabelle angezeigt, wenn Prod-Linie Subtype = Marine, aber ich möchte nur die beiden oben genannten Kombinationen zu meinem Ergebnissatz filtern. Jede Hilfe würde sehr geschätzt werden!

Haupt Tabelle

+--+------------------+-------------+-----------------+ 
| |Prod line Subtype | Section  | Profit Code | 
+--+------------------+-------------+-----------------+ 
| | Marine   | Inland  | Builders  | 
| | Marine   | Ocean  | Stock   | 
| | Property   | General  | Transport  | 
| | Energy   | Source  | Others   | 
| | Property   | General  | Transport  | 
| | Energy   | Source  | Transport  | 
| | Marine   | Inland  | Transport  |  
| | Marine   | Floaters | Transport  |  
| | Marine   | Cargo  | Others   |  
+--+------------------+-------------+---------------- + 

Erwartete Ergebnisse

+--+------------------+-------------+-----------------+ 
| |Prod line Subtype | Section  | Profit Code | 
+--+------------------+-------------+-----------------+ 
| | Marine   | Inland  | Builders  | 
| | Marine   | Ocean  | Stock   | 
| | Property   | General  | Transport  | 
| | Energy   | Source  | Others   | 
| | Property   | General  | Transport  | 
| | Energy   | Source  | Transport  | 
+--+------------------+-------------+---------------- + 

Meine Anfrage Versuch:

select * 
from #Step1 
where c1.row_ord = 1 
and c1.[Prod Line Subtype] = 'Marine' AND (
    (c1.[Section] = 'Inland' AND c1.[Profit Code] = 'Builder') 
    OR (c1.[Section] = 'Ocean' AND c1.[Profit Code] = 'Stock') 
) 
+0

Sie eine Case-Anweisung für diese verwenden können, was ist Ihre aktuelle Abfrage? –

+1

Es ist im Allgemeinen besser, 'AND' /' OR' anstelle von 'case' _expressions_ in' WHERE'-Klauseln zu verwenden. – jarlh

+0

Mögliches Duplikat von [Bedingte WHERE-Klausel in SQL Server] (http://stackoverflow.com/questions/18629132/conditional-where-clause-in-sql-server) –

Antwort

1

Was:

Select * from [Your table] 
    Where ([Prod line Subtype]<>'Marine' Or 
     (Section='Inland' And [Profit Code]='Builders') Or 
     (Section='Ocean' And [Profit Code]='Stocks')  
    ) 

Kann die [Prod Linie Subtype] = ‚Marine‘ aus oder Bedingungen auslassen

+0

Danke funktioniert wie ein Champion :) – Joe

Verwandte Themen