簡體   English   中英

Oracle:如何按行中的第一個值分組?

[英]Oracle: how to group by 1st value in row?

表格在表格中有3列:ITEM,SUB_ITEM,DATE_CREATED。

ITEM - item id (string)
SUB_ITEM - item id (int)
DATE_CREATE - date the SUB_ITEM was created (date)

場景:

  1. 有3種不同的商品(AAA1,AAB2,ABB3)
  2. 這些項目的全部3個都有多個子項目。
  3. 每個項目都有一個與每個項目相同的子項目(例如,所有3個項目的SUB_ITEM = 101010)

我正在嘗試做類似的事情:

select * 
from table 
group by ITEM, SUB_ITEM, DATE_CREATED

如何使它僅顯示1行? 我不在乎它是否選擇AAA1或AAB2或ABB3,我只希望它選擇1並刪除其余部分,因此每個SUB_ITEM將顯示1行,但仍顯示至少一個父項。

編輯:

感謝Mathguy回答上述問題。

問題2:除了sub_item以外,是否可以按項目的前2個字母分組? 因此,返回2行而不是返回1行:AAA1和AAB2將級聯為1行,而ABB3將成為第二行,因為'AA'和'AB'不同。

編輯2:請參閱主要答案注釋以獲取問題2的答案

一種方法是按sub_item ,並在另一列上獲取maxmin (例如,在date_created max ),並在同一行的其余列中獲取任何值。

select min(item) keep (dense_rank last order by date_created) as item, 
       sub_item, max(date_created) as date_created
from   table_name
group by sub_item
;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM