具有复杂条件的SQL子查询

nim*_*ima 2 sql t-sql sql-server sql-server-2008-r2

我有这样一张桌子:

TransId.   LayerNo.  AccountId.   
100.       1.        2.        
100.       2.        3.        
120.       1.        5.        
120.       2.        6.    
120.       3.        12.     
70.        1.        2.   
Run Code Online (Sandbox Code Playgroud)

我想找到TRANSID(s)的结合:(LayerNo = 1和(帐户= 2或5))和(LayerNo = 2和(帐户= 3或6))

结果集将是第1,2,3,4行.我怎么能写查询来获得结果?我的数据库是SQL server 2008 r2在此先感谢Nima

Mar*_*ith 5

SELECT TransId
FROM   your_table
WHERE  ( layerno = 1
         AND accountid IN ( 2, 5 ) )
INTERSECT
SELECT TransId
FROM   your_table
WHERE  ( layerno = 2
         AND accountid IN ( 3, 6 ) )  
Run Code Online (Sandbox Code Playgroud)