SQL - 如何使用where子句中的sql case语句重新创建此逻辑

时间:2017-12-07 17:01:34

标签: sql sql-server case where

我还在学习阶段,请帮我解决以下问题:

我在一个查询中得到一个逻辑:

select val = 
                CASE 
                    WHEN tbl.ReqNo LIKE '456%'  THEN 'Value A'
                    ELSE 'Value B'
                END
   From tblA tbl

现在我需要使用此逻辑来过滤另一个查询:

   SELECT    B.col1, A.col1, A.col2   
   FROM  
   tblB B  
   INNER JOIN tblA A
   ON B.ID = A.ID   
   WHERE   
   B.BID = 123
   AND B.BName = "sth"
   AND B.Address = "123 St ..."

任何人都可以帮助我如何在第二个查询的WHERE子句中使用case语句来过滤结果。

1 个答案:

答案 0 :(得分:0)

试试这个

 SELECT    B.col1, A.col1, A.col2   
   FROM  
   tblB B  
   INNER JOIN tblA A
   ON B.ID = A.ID   
   WHERE   
   B.BID = 123
   AND B.BName = "sth"
   AND B.Address = "123 St ..." and 
   ColumnName = CASE 
                WHEN tblA.BName LIKE '456%'  THEN 'Value A'
                ELSE 'Value B'
            END

但我不推荐用例