2016-05-24 6 views
0

Ich habe folgende Tabelle in sql serverT-SQL, wie wahr oder falsch oder beide in zurückzuholen, wo Klausel

ItemID OrderID personId Active 
1  1   1   0 
2  1   1   1 
3  1   1   1 
4  1   1   1 

i gespeichert haben Prozedur

GetRecords(@OrderId,@PersonId, @Active) 

select * from Records where OrderID = @orderId and PersonId = @PersonId 

, die Datensätze basierend auf OrderID bringt, PersonId Jetzt möchte ich einen zusätzlichen Filter basierend auf @Active anwenden, wenn seine aktive dann nur aktive Datensätze bringen , wenn es nicht aktiv sowohl aktiv als auch inaktivbringen wie erreiche ich diese in where-Klausel

+2

'UND (@Active = 0 OR (@Active = 1 und Active = 1))'. Eine andere könnte sein UND FALL WENN @Active = 0 THEN 1 WENN @Active = 1 UND Active = 1 DANN 1 ELSE 0 END = 1' – Lamak

Antwort

0

Versuchen Sie folgendes:

select * 
from Records 
where OrderID = @orderId and PersonId = @PersonId and 
     ((@active = 1 and active = 1) or (@active = 0)) 
+0

@sagi es könnte verständlicher sein, aber sie sind völlig anders – Lamak

+0

@Lamak Huh, Ich denke, ich bin müde. Lass uns das vergessen :) – sagi

Verwandte Themen