2016-04-14 10 views
3

Belirli bir kimlik için, iki farklı tablodaki iki değerin bir sayıdan büyük olması durumunda, iki değerden oluşan bir satır görüntüleyeceğim bir koşul oluşturmaya çalışıyorum. Aksi halde, yeni bir satır görüntülemek istemiyorum. Bunun için doğru sözdizimi nedir?T-SQL sözdizimi, bu veya bunun için başka bir şey yok mu?

if(select 
     a.Column1 > 2 or 
     b.Column2 > 2 
    from 
     Table1 a join Table2 b on a.ID = b.ID) 
begin 
select 
    a.Column1, 
    b.Column2 
from 
    Table1 a join Table2 b on a.ID = b.ID) 
end 

else 
begin 
    Don't Select 
end 

cevap

2

Sadece bir where koşulu olarak eklemek gerekir. Belirli bir satır için where durumunuz başarısız olursa, bu satır seçilemez. VkP cevabı @

select 
    a.Column1, 
    b.Column2 
from 
    Table1 a join Table2 b on a.ID = b.ID 
where a.column1 > 2 or b.column2 > 2 
0

istediğini muhtemelen, ancak yazdım sorgunun edebi çeviri - Kontrol akış tablolarını kullanmadan - şudur:

select 
    a.Column1, 
    b.Column2 
from 
    Table1 a join Table2 b on a.ID = b.ID 
where exists (select 1 from Table1 c join Table2 d on c.ID = d.ID where c.Column1 > 2 or d.Column2 > 2); 

Bu işlem ya dönüş Birleşimdeki kayıtlardan birinin Table1.Column1 > 2 veya Table2.Column2 > 2 olmaması ya da tüm kayıtları döndürmesi hiç bir şey değildir.

İlgili konular