按功能分组

时间:2013-09-13 10:35:12

标签: mysql sql oracle group-by rank

我有3张桌子 SELECT * FROM BIS_RCNC_CRIT_ATTR

RCNC_CRIT_ATTR_ID   RCNC_CRIT_SET_ID    RCNC_ATTR_TYP_ID    RCNC_CRIT_ATTR_EXPR
60947   10660   5   5322
61039   10706   5   5322
75241   13077   5   5322

SELECT * FROM BIS_RCNC_ATTR_TYP

RCNC_ATTR_TYP_ID    RCNC_TYP_ID RCNC_ATTR_TYP_NM    RCNC_ATTR_TYP_DSC
1   1   SN  SN
2   1   CU  CU
3   1   IS  IS
4   1   SE  SE
5   1   IV  IV
6   1   BE  BE
7   1   PN  PN
8   1   PV  PV

SELECT * FROM BIS_RCNC_CRIT_SET

RCNC_CRIT_SET_ID    RCNC_CRIT_TYP_ID    RCNC_CRIT_SET_STAT
10660   2   A
10706   2   A
13077   2   A

我正在运行查询

select
    BIS_RCNC_CRIT_SET.RCNC_CRIT_SET_ID AS "ID",
    max(case when rcnc_attr_typ_nm ='IV' then rcnc_crit_attr_expr else null end) as "ACCT",
    max(case when rcnc_attr_typ_nm ='PN' then rcnc_crit_attr_expr else null end) as "Platform"
    FROM BIS_RCNC_CRIT_SET
INNER JOIN BIS_RCNC_CRIT_ATTR
    ON BIS_RCNC_CRIT_SET.RCNC_CRIT_SET_ID = BIS_RCNC_CRIT_ATTR.RCNC_CRIT_SET_ID
INNER JOIN BIS_RCNC_ATTR_TYP
    on bis_rcnc_crit_attr.rcnc_attr_typ_id = bis_rcnc_attr_typ.rcnc_attr_typ_id
where bis_rcnc_crit_set.rcnc_crit_typ_id = 2 and bis_rcnc_crit_set.RCNC_CRIT_SET_STAT = 'A'
group by
BIS_RCNC_CRIT_SET.RCNC_CRIT_SET_ID

查询正在为IVAN和平台获取重复值。

10706   5322        Bloomberg
10660   5322        Bloomberg
13077   5322        Bond Desk

如何消除基于平台和IVAN的重复

我想要什么

10706   5322    Bloomberg   
13077   5322    Bond Desk

1 个答案:

答案 0 :(得分:0)

根据我的理解

select case when rcnc_attr_typ_nm ='Platform Name' then rcnc_crit_attr_expr else null end as "Platform",
       case when rcnc_attr_typ_nm ='IVAN' then rcnc_crit_attr_expr else null end as "ACCT",
       max(BIS_RCNC_CRIT_SET.RCNC_CRIT_SET_ID) AS "ID",
       max(case when rcnc_attr_typ_nm ='AcctName' then rcnc_crit_attr_expr else null end)as "AcctName"
  FROM BIS_RCNC_CRIT_SET INNER JOIN BIS_RCNC_CRIT_ATTR
                         ON BIS_RCNC_CRIT_SET.RCNC_CRIT_SET_ID = BIS_RCNC_CRIT_ATTR.RCNC_CRIT_SET_ID
                         INNER JOIN BIS_RCNC_ATTR_TYP
                         on bis_rcnc_crit_attr.rcnc_attr_typ_id = bis_rcnc_attr_typ.rcnc_attr_typ_id
 where bis_rcnc_crit_set.rcnc_crit_typ_id = 2 and bis_rcnc_crit_set.RCNC_CRIT_SET_STAT = 'A'
 group by case when rcnc_attr_typ_nm ='Platform Name' then rcnc_crit_attr_expr else null end
     , case when rcnc_attr_typ_nm ='IVAN' then rcnc_crit_attr_expr else null end

请检查这是否是您想要的。

祝你好运