问题1:下面是我要写的一条SQL ORACLE的:
SELECT A.REGISTNO 
max(A.LOSSUNDERWRITEENDDATE),
(-------)
FROM DATA_CASEBASEINFO A
GROUP BY A.REGISTNO;括号里面是要放入这么一个字段CHECKCASECODE。对应的是每一个REGISTNO 的最大的LOSSUNDERWRITEENDDATE 那一行数据的CHECKCASECODE字段。请问该如何补充。问题2:
下面是我写的一条SQL ORACLE的:
SELECT A.REGISTNO,
       (case when sum(nvl(EXGRATIAFLAG,0))> 0 then '是' else '否' end),
     
  FROM DATA_CASEBASEINFO A GROUP BY a.REGISTNO;
DATA_CASEBASEINFO表的数据可以简化为:
REGISTNO    EXGRATIAFLAG
   1             0
   1             1
   1             1
   2             0
   2             0
   2             0
最终要显示的结果是:GROUP BY 了REGISTNO 后如果EXGRATIAFLAG包含至少1个1就显示是。不包含任何1就显示否。上面给出的SQL虽然能解决该问题。但是如果以后这标志位的不是1和0,而是1,2这样子。或者出现更多的标志位。代码就不好维护了。
REGISTNO    EXGRATIAFLAG
   1             是
   2             否

解决方案 »

  1.   

    Q1:
    SELECT A.REGISTNO, A.LOSSUNDERWRITEENDDATE, A.CHECKCASECODE
      FROM (SELECT A.REGISTNO,
                   A.LOSSUNDERWRITEENDDATE,
                   A.CHECKCASECODE,
                   ROW_NUMBER() OVER(PARTITION BY A.REGISTNO ORDER BY A.LOSSUNDERWRITEENDDATE DESC) AS RN
              FROM DATA_CASEBASEINFO A)
     WHERE RN = 1Q2:
    不管你【是】的FLG有多少,总归要约定一个【否】的FLG,不然你随便变,人都不知道。SQL语句就更迷茫了。