[技術討論] (己解決)(SQL) 每個account 只要第一條 record

本帖最後由 我叫日日野 於 2016-4-17 23:08 編輯

請教各位ching, 我有個 table如圖(有顏色的部份),
每個 "account_no" 我只係想出佢第一條既 record, 其他唔要, 請問 SQL(oracle) 可以點樣寫?

嗜係我只想留低以下既 row:
A, C, F, H, L

感激!!




----------
20160417:
update 返個header 先, 多謝咁多位ching, 問題已經解決! :)
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

如果唔同日子我都可以用 max date 去 group 埋佢, 但係有D係同一日入...
有D account 就出現4次等等...

我只想要每個account 既最先(前)果條就 OKay

TOP

select min(InputDate), Account_no, Product_cd, Agent
from table
group by Account_no

未測試, 你可以TRY下

TOP

select min(InputDate), Account_no, Product_cd, Agent
from table
group by Account_no

未測試, 你可以T ...
WhatTheFish 發表於 2016-3-29 16:23



    thx!
其實再加埋 min(product_cd), min(agent) 黎 group 都得既... 不過實際上個 TABLE 重有好多 column(20個左右), 唔通真係要咁做? #__#

TOP

TOP

「每個 "account_no" 我只係想出佢第一條既 record」即係乜?
max(input_date)?max(procudt_cd)?max(agent)?

點解係A,唔係B?
點解係C,唔係D,唔係E?
點解係F,唔係G?
點解係H,唔係I,唔係J,唔係K?
點解係L,唔係M?

TOP

回覆 6# 望月小妖


    WA! 我記得你個名!! 不過唔記得咩game 見過 XD

any肥, 我最後咁:
唔知係咪有D 蠢

CREATE TABLE duplicate_records_2 AS
SELECT ROWNUM rn, A.* FROM duplicate_records_1 A
;
SELECT A.*
FROM duplicate_records_2 A,
(
SELECT account_no, MIN(ROWNUM) min_row_num
FROM duplicate_records_1
GROUP BY account_no
) b
WHERE A.account_no = b.account_no
AND A.rn = b.min_row_num
;

TOP

本帖最後由 snoopy11hk 於 2016-3-31 22:39 編輯
回覆  望月小妖


    WA! 我記得你個名!! 不過唔記得咩game 見過 XD

any肥, 我最後咁:
唔知係咪有D 蠢  ...
我叫日日野 發表於 2016-3-29 17:29



    我會咁寫
SELECT *
FROM
(
SELECT
a.*
, ROW_NUMBER() OVER (PARTITION BY ACCOUNT_NO ORDER BY INPUT_DATE ASC) AS ROW_NUM
FROM a
)
WHERE ROW_NUM = 1
[fix comma @ 2016 March 31 22:38]

TOP

回覆  望月小妖


    WA! 我記得你個名!! 不過唔記得咩game 見過 XD

any肥, 我最後咁:
唔知係咪有D 蠢  ...
我叫日日野 發表於 2016-3-29 17:29



    Group by加Min/Max如出現multiple就錯架喇,一定要排序,用window function拎最大/細果個

TOP

回覆 8# snoopy11hk


    thx!! 聽日試吓~

TOP