这是我的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有一些信息。
答案 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)