2014-10-09 61 views
0

這裏是我的MSSQL代碼片段SQLAlchemy的:用case語句邏輯運算符

SELECT 
Sum((Case When me.status not in ('CLOSED','VOID') and me.pc_cd in ('IK','JM') 
Then 1 else 0 end)) as current_cd 
from 
ccd_pvc me with(nolock) 

我將如何使用運營商,case語句,如果我寫在SQLAlchemy的上述聲明。

我已經試過這樣做,但沒有奏效

case([and_((ccd_pvc.status.in_(['CLOSED', 'VOID']),ccd_pvc.pc_cd.in_(['IK','JM'])), 
literal_column("'greaterthan100'"))]) 

我已經通過sqlalchemy documentation搜查,但沒有發現使用邏輯運算符與case語句的信息。

link有一些相關信息。

回答

2

這應該讓你開始:

ccd_pvc = aliased(CcdPvc, name="me") 

expr = func.sum(
    case([(and_(
     ccd_pvc.status.in_(['CLOSED', 'VOID']), 
     ccd_pvc.pc_cd.in_(['IK', 'JM']) 
    ), 1)], else_=0) 
).label("current_cd") 

q = session.query(expr)