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' または 「OR LEVEL "OR LEVEL( '300'、 '100'、 '404')に" する必要があります
内部または内側とでは、 ( '300'、 '100'、 '404')の場合は、の現在のシステム時間がBILLTIMEより大きい場合( '300'、 '404')、レベルが '300'、 '100'、 '404'の場合CASE文のSQL
PS:BILLTIMEは軍事的な時間 "130000"の形式になっているため、変換が行われます。
ドン」 'where'節で' case'を使います。単純ブール論理で書き直すことができます。 –
CASEは文の一部ではなく、条件付きの 'EXPRESSION'です(Cの3項式と同じように) – joop