回覆 9# 望月小妖


    yes... 我成日用 group by + max/min 去搵最大/最少, group 完都可能重有 duplicate, 要一次過 group 多幾個 column 或者落多D criteria ...

TOP

首先你要知道自己想要乜, 每個 account_no 只出第一條, 你就要定義 "第一條" 係乜野意思.

如果 input_date, product_cd, agent 有排序既, 由細到大第一隻就好自然係 min(?) 喇, 否則就係 max(?) 喇.
但係如果乜都唔緊要, 是旦一隻都得, 咁不如唔好要, 就咁攞 account_no 就唔會 group 錯.

SQL server 既 data, 唔計 clustered index, SELECT出黎既排序係由你定既, 就算 SELECT FIRST, 你都要比佢知, 乜野次序下既 FIRST.
你個 case, 真係睇唔出 product_cd 係想點排 (PE 先過 KS, KB 又先過 PE, 唔通排第二個byte?), 所以第一隻係定義唔到.

TOP

回覆 12# Super169


    ic~
"第一條" 既定義係: 條 record 既輸入先後去排, 最早入果條就係第一條.
如果我用 7# 果條 SQL 應該就係我想要既野.
但係正常做法可能係 8# 果條先岩, 我要再試下.


同埋我諗我明"小妖"既意思, 就以 <F> 同 <G> 果兩行為例, 如果group 埋佢同時又用min(?) 既話, "Product_cd" 就會囉左 "KSE02", "Agent" 就會囉左 "AG01".
但係跟本就冇一條咁既 record.

TOP

回覆  Super169


    ic~
"第一條" 既定義係: 條 record 既輸入先後去排, 最早入果條就係第一條.
如果我 ...
我叫日日野 發表於 2016-3-30 15:55



如果你話用輸入次序, 唔知 Oracle 係咪有呢樣野, 假設有 #8 講既 row_number() 存在 (否則都無得 sort).
SQL 可以用 having 去 filter group 入面既野.'

SELECT input_date, account_no, product_cd, agent
  FROM table
GROUP BY account_no
HAVING row_number() = min(row_number())

TOP

Select top 1 sql server

via HKEPC Reader for Android

TOP

我會咁寫
SELECT *
FROM
(
SELECT
a.*
, ROW_NUMBER() OVER (PARTITION BY ACCOUNT_NO, ORDER BY I ...
snoopy11hk 發表於 2016-3-29 18:13



得左, 囉到所有 account 既第一條 record 出黎!
簡短過我上面 7# 果條

不過  "ACCOUNT_NO" 同 "ORDER BY" 之間多左個 comma(,),
delete 左就ok了!
thanks!!

TOP

得左, 囉到所有 account 既第一條 record 出黎!
簡短過我上面 7# 果條

不過  "ACCOUNT_NO" 同 " ...
我叫日日野 發表於 2016-3-30 21:46


太耐無寫, 唔係好記得 D syntax

TOP

本帖最後由 toylet 於 2016-3-30 22:32 編輯
請教各位ching, 我有個 table如圖(有顏色的部份),
每個 "account_no" 我只係想出佢第一條既 record, 其他唔 ...
我叫日日野 發表於 29/3/2016 15:58

即兮搵 Account_no + Agent 最早出現的 Input_Date 和 當時的 Product_cd?
但兮 Input_Date 會重複, 點揀先? 個 table 本來都無 row number, 設計有問題!

TOP

如果你話用輸入次序, 唔知 Oracle 係咪有呢樣野, 假設有 #8 講既 row_number() 存在 (否則都無得 sort). ...
Super169 發表於 2016-3-30 16:42



我唔肯定如果你咁寫既話, 係可以只 group 一個 field 都過到關?
我試過照你咁係行唔到, 所以之後我 group 晒上面果4 個 field, 再加你果句 having row_number() = min(row_number()) 係最後.
答案係出 error:
  1. ORA-30484: missing window specification for this function
複製代碼
我諗可能係衰左係 having 果度.

TOP

即兮搵 Account_no + Agent 最早出現的 Input_Date 和 當時的 Product_cd?
但兮 Input_Date 會重複, 點揀 ...
toylet 發表於 2016-3-30 22:31



    冇錯, 我已經搵到答案了, thanks anyway!
table 本身有記錄每條 record 既row number 的, 唔駛特別加.
用 rownum 就會見到.

TOP