[英]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)
場景:
我正在嘗試做類似的事情:
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
,並在另一列上獲取max
或min
(例如,在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.