【菜鸟】提问有关Oracle query

luxury515 发布于 2015/11/05 12:30
阅读 78
收藏 0
SELECT (CASE
             WHEN TBC.USE_YN = 'O' THEN ''
             WHEN TBCU.USE_YN = 'Y' THEN ''
             WHEN TBCU.USE_YN = 'N' THEN 'style=\"display: none;\"'
             ELSE 'style=\"display: none;\"'
          END)
            COL_SH,
         SUM (
            CASE
               WHEN TBC.USE_YN = 'O' THEN 1
               WHEN TBCU.USE_YN = 'Y' THEN 1
               WHEN TBCU.USE_YN = 'N' THEN 0
               ELSE 0
            END)
         OVER () COL_CNT
    FROM T_BANN_COL TBC,
         (SELECT COL_NUM, USE_YN
            FROM T_BANN_COL_USE
           WHERE USE_YN = 'Y' AND IN_NUM = ".$_SESSION['A_NUM'].") TBCU
   WHERE TBC.COL_NUM = TBCU.COL_NUM(+) AND TBC.USE_YN <> 'N'
ORDER BY ORDERBY;

其中,
over() col_cnt 什么意思?网上说: 它是为改善grup by , order by 语句而诞生的函数。

WHERE TBC.COL_NUM = TBCU.COL_NUM(+) AND TBC.USE_YN <> 'N'
这里的(+) <> ‘N'又是干什么的?



加载中
0
IdleMan
IdleMan

1.这里的over() 是为sum服务,如果不加over 就得用group才能sum  ,即使加了group 还不能显示COL_CNT列

select rownum, sum(rownum) over() from dual 
   connect by rownum<=3;



rownum  sum(rownum..
1	6
2	6
3	6




2.(+)在等号右边表示left  join

在等号左边表示right join

没有+表示inner join

3.<>'N'表示 !='N'

0
jolphin
jolphin
ORACLE分析函数 SUM() OVER(),自己看看文档吧
返回顶部
顶部