2

これらの列を持つテーブル BNK_ACCT_GRP_ST があるとします。

Column Name                          ID   Pk    Null? Data Type
BNK_ACCT_GRP_ST_ID1                  1          N     NUMBER (15)
BNK_ACCT_ID                          2          N     NUMBER (15)
BNK_ACCT_GRP_ID                      3          N     NUMBER (15)
BNK_ACCT_GRP_ST_CD                   4          N     NUMBER (4)
BNK_ACGRP_ST_SRC_EVNT_TYP_CD         8          N     NUMBER (4)
BNK_ACGRP_ST_SRC_TRAN_ID             9          N     NUMBER (15)
FNCL_GRP_ID                          10         N     NUMBER (15)
CREN_DT                              12         N     DATE
LAST_UPD_DT                          13         N     DATE
PCSG_DT                              14         N     DATE
BNK_ACCT_GRP_ST_SEQ_NO               15         N     NUMBER (15)

その bnk_accts データが取り込まれます:

例 1:

BNK_ACCT_GRP_ST_ID  BNK_ACCT_ID BNK_ACCT_GRP_ID BNK_ACCT_GRP_ST_CD BNK_ACGRP_ST_SRC_EVNT_TYP_CD FNCL_GRP_ID BNK_ACCT_GRP_ST_SEQ_NO
2282                150627009   1724            4                  150                          111111111   2
2283                150627009   1440            2                  149                          111111112   1
1908                150627009   1725            2                  134                          111111111   1
1906                150627009   1441            2                  135                          111111111   7

例 #2:

BNK_ACCT_GRP_ST_ID  BNK_ACCT_ID BNK_ACCT_GRP_ID BNK_ACCT_GRP_ST_CD BNK_ACGRP_ST_SRC_EVNT_TYP_CD FNCL_GRP_ID BNK_ACCT_GRP_ST_SEQ_NO
2364                150275031   1435            2                  114                          133333333   3
2365                150275031   1436            7                  116                          133333333   2
1902                150275031   1435            1                  72                           133333333   2
1903                150275031   1435            2                  36                           133333333   1
1904                150275031   1436            5                  74                           133333333   1

どこ:

  • BNK_ACCT_GRP_ST_ID は自動インクリメント フィールドです。
  • BNK_ACCT_ID は実際には銀行口座番号の ID です。
  • BNK_ACCT_GRP_ID は grp id (常に増加) です。
  • BNK_ACCT_GRP_ST_CD、BNK_ACGRP_ST_SRC_EVNT_TYP_CD、および BNK_ACGRP_ST_SRC_TRAN_ID は、トランス目的の ID です。
  • FNCL_GRP_ID - この銀行口座が属する銀行機関の ID

必要なもの: FNCL_GRP_ID に基づいて各 BNK_ACCT_ID の最新の BNK_ACCT_GRP_ID をプルするクエリを作成する。ここで、1 つの銀行口座は 1 つ以上の fncl 機関に属することができるため、クエリは次の出力を返す必要があります。

例#1:

FNCL_GRP_ID  BNK_ACCT_ID  BNK_ACCT_GRP_ID
111111111    150627009    1725
111111112    150627009    1440

例#2:

FNCL_GRP_ID  BNK_ACCT_ID  BNK_ACCT_GRP_ID
133333333    150275031    1436

私は最近、のコンボなど、多くのことを試しました

(select distinct BNK_ACCT_ID,FNCL_GRP_ID) join to rank() over (partiton  by ) 

しかし運がない。

4

2 に答える 2

2

これを試して:

WITH BankData AS
(
    SELECT  a.*, 
            ROW_NUMBER()
              OVER(PARTITION BY fncl_grp_id, bnk_acct_id ORDER BY bnk_acct_grp_id DESC) AS Position
      FROM bnk_acct_grp_st a
)
SELECT  *
  FROM  BankData
 WHERE  Position = 1
于 2012-07-03T18:22:52.347 に答える
0

@Chandu'sは、最大値とともに任意の列をプルできるかなり普遍的なソリューションです。FNCL_GRP_IDただし、出力にこれら 3 つの列 ( 、BNK_ACCT_ID、 )のみが必要な場合はBNK_ACCT_GRP_ID、古き良きGROUP BY句を使用することもできます。

SELECT
  FNCL_GRP_ID,
  BNK_ACCT_ID,
  MAX(BNK_ACCT_GRP_ID) AS BNK_ACCT_GRP_ID
FROM BNK_ACCT_GRP_ST
GROUP BY
  FNCL_GRP_ID,
  BNK_ACCT_ID
于 2012-07-03T21:24:11.063 に答える