语句:SELECT POLICYNO,
(CASE CLASSESCODE WHEN '0331' THEN '0507' ELSE '0501' END) AS riskcode,
TO_CHAR(STARTDATE,'yyyy-MM-dd hh24:mi:ss') as STARTDATE,
(select count(*) from c_claim where policyno = '1993306035520190000005' and endStatus <> '2') as w,
ENDDATE,
TO_CHAR(SUM(NVL(AMOUNT,0))) AS AMOUNT,
TO_CHAR(SUM(NVL(PREMIUM,0))) AS PREMIUM FROM (
SELECT C.POLICYNO,
C.CLASSESCODE,
C.STARTDATE,
C.ENDDATE,
B.AMOUNT,
B.PREMIUM
FROM P_PUBLIC_FEE_LIST B, P_PUBLIC_POLICY C
WHERE C.POLICYNO = B.APPLYNO
AND C.POLICYNO = '1993306035520190000005'
AND C.ENDORSENO = '0') GROUP BY POLICYNO,
CLASSESCODE,
STARTDATE,
ENDDATE;
1. (CASE CLASSESCODE WHEN '0331' THEN '0507' ELSE '0501' END) AS riskcode 相当于switch case
2.TO_CHAR(STARTDATE,'yyyy-MM-dd hh24:mi:ss') as STARTDATE to_char()函数用来将数值型或者日期格式转换为字符型。这里为日期格式转化。观察下这里的字符格式模板:'yyyy-MM-dd hh24:mi:ss' 因为Oracle不区分大小写,所以 这里小时制不用大小写来区分,而是使用HH12代表12小时制,HH24代表24小时制度。用mi代表分钟。
3.不等于使用<>
4. TO_CHAR(SUM(NVL(AMOUNT,0))) AS AMOUNT NVL(AMOUNT,0) 如果AMOUNT为空就取0。这里TO_CHAR() 只传了一个参数只是简单的将数字型转化为字符型。
5.From 后面只是包裹了一层
没啥可将的了。我是庖丁。专注解牛!