簡體   English   中英

SQL從子查詢中選擇

[英]SQL select from subquery

我在從子查詢中選擇具有此小演示數據的問題,例如:

ID          CLASS_ID               PROP          STATUS        ROW     SELECTED    STEP
12345679    1312            0         21           3       07-FEB-14    1
12345679    1312            0         21           1       26-FEB-14    -1

我想獲取所有信息(每列),下面的sql正常運行

SELECT ID,CLASS_ID,min(SELECTED) FROM ( SELECT... ) GROUP BY ID,CLASS_ID

ID          CLASS_ID             SELECTED   
12345679    1312                07-FEB-14   

但是,如果我想要其他列,則必須將它們添加到group語句中,否則我將獲得“ not a group statement”,從而使它過時,有什么想法嗎?

您要使用分析功能row_number()

select ID, CLASS_ID, PROP, STATUS, ROW, SELECTED  
from (select s.*, row_number() over (partition by id, class_id
                                     order by selected desc) as seqnum
      from (<subquery>) s
     ) s
where seqnum = 1;

您想要基於組ID和所有其他列的class_id獲得最少的selected列,則可以MIN() over partitioned by函數MIN() over partitioned by使用MIN() over partitioned by -

SELECT ID,
       CLASS_ID,
       min(SELECTED) over (partition by ID,CLASS_ID order by 1) , 
       col1 ...
FROM ( SELECT... ) 

暫無
暫無

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

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