RES as
(
SELECT code , payement,
sum(A.ALLPAYMENT) as ACTUAL_PAYMENT,
A.NAME
FROM FINANCES A
WHERE payement= '6396'
and (ENDDATE>= CURRENT_TIMESTAMP)
and (BILLREFRENCE<> '' or
(case when ( CONVERT (int, (select BILLTIME from MYCALENDAR CL
where CL.code = A.code and CL.NAME=
A.NAME
)
)
> CONVERT (INT, REPLACE(CONVERT(VARCHAR(8), GETDATE(), 108),
':', ''))
) then LEVEL in ('300', '100', '404')
else
LEVEL in ('300','404')
)
)
GROUP BY code, payement, A.NAME)
OR条件需要是任一 “或级别中( '300', '100', '404')” 或 “OR中( '300' LEVEL的内部或内部和, '404')“ 如果当前SYSTEMTIME比BILLTIME更大它的水平( '300', '404'),如果不是,它是在( '300', '100' LEVEL, '404')CASE语句SQL
PS:BILLTIME的格式是军事时间“130000”,因此转换。
别在'where'子句中使用'case'。它可以用简单的布尔逻辑重写。 –
CASE不是(声明的一部分),而是一个有条件的'EXPRESSION'(就像C中的三元表达式) – joop