SQLAlchemy:具有case语句的逻辑运算符

时间:2014-10-09 10:15:25

标签: sqlalchemy

这是我的mssql代码段

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)  

如果我在sqlalchemy中编写上述语句,我将如何将运算符与case语句一起使用。

我试过这样做但没有用

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

我搜索了sqlalchemy documentation,但未找到有关使用case语句的逻辑运算符的信息。

link有一些信息。

1 个答案:

答案 0 :(得分:3)

这应该让你开始:

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)