首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

修改一个SQL语句,count()的使用方法,该如何解决

2012-05-23 
修改一个SQL语句,count()的使用方法SELECT T1.TEAMID, --机构代码T1.PERSONID,--需要统计的字段(select AG

修改一个SQL语句,count()的使用方法
SELECT T1.TEAMID, --机构代码  
  T1.PERSONID, --需要统计的字段  
  (select AGESECTIONCODE from ANAREPORT11.CD_ZK_PERSON_AGE_SEG A where DECODE(T2.BIRTHDAY,
NULL,
0,
SUBSTR('2012-03-12', 1, 4) - TO_CHAR(T2.BIRTHDAY, 'YYYY'))>= A.Min
And
DECODE(T2.BIRTHDAY,
NULL,
0,
SUBSTR('2012-03-12', 1, 4) - TO_CHAR(T2.BIRTHDAY, 'YYYY'))<A.Max ) AGESECTIONCODE, --年龄分段代码  
  T2.EDUCATIONCODE, --学历代码  
  DECODE(T3.PERSONID, NULL, 0, 1) ISLEADER, --是否主管  
  T2.SEXCODE, --性别代码  
  (select WORKYEARSECTIONCODE from ANAREPORT11.cd_zk_person_workyear_seg B where DECODE (T2.BIRTHDAY,
NULL,
0,
SUBSTR('2012-03-12', 1, 4) - TO_CHAR(T2.BIRTHDAY, 'YYYY'))>= B.Min
And
DECODE(T2.BIRTHDAY,
NULL,
0,
SUBSTR('2012-03-12', 1, 4) - TO_CHAR(T2.BIRTHDAY, 'YYYY'))<B.Max ) WORKYEARSECTIONCODE, --从业年限分段代码  
  T2.RECRUITORIGINCODE -- 招募来源代码  
  FROM ANAREPORT11.ODS_SAL_TEAM_MEMBER T1  
  LEFT JOIN (SELECT *  
  FROM ANAREPORT11.ODS_SAL_PERSON  
  WHERE PERSONSTATUSCODE = '1') T2 ON T1.PERSONID =  
  T2.PERSONID  
  LEFT JOIN ANAREPORT11.ODS_SAL_TEAM_LEADER T3 ON T1.TEAMID = T3.TEAMID  
  AND T1.PERSONID =  
  T2.PERSONID  


红色字段是从另一个表中查询出来的数据或者表达式,我现在想统计count(T1.PERSONID),但是红色字段无法group by 怎么解决这个问题啊?

[解决办法]

SQL code
count(T1.PERSONID)over(partition by 字段 order by 字段) 就不用在group by !
[解决办法]
红色好多啊,看晕了,说你要实现的功能吧
分析函数可以代替group by的功能,是不是你需要的
比如楼上写的
count(T1.PERSONID)over(partition by 字段1 order by 字段2)
实际上就是以字段1进行了group by了

热点排行