簡體   English   中英

Oracle SQL在一個查詢中選擇多列不同的值,並根據不同的值對每一列進行分頁

[英]Oracle SQL select multiple columns distinct values in one query with pagination requirement for each column based on distinct value

我的桌子包含如下內容

CUSTOMER_ID ATTR1 ATTR2


  1 V1_0001 V2_0001 2 V1_0001 V2_0001 3 V1_0001 V2_0001 4 V1_0001 V2_0002 5 V1_0001 V2_0003 6 V1_0002 V2_0004 7 V1_0003 V2_0005 8 V1_0004 V2_0005 9 V1_0004 V2_0005 10 V1_0005 V2_0006 .. ....... ....... 100000 V1_0120 V2_0268 

已選擇100000行。

有什么辦法可以在一個查詢中選擇每列的不同值(不使用按列出的列分組),也可以不使用UNION? 不需要Customer_Id。

復雜性在於,我需要將兩列的唯一值計數限制為每列(第一個)100條記錄。

換句話說,我的結果應該是這樣的,

ATTR1 ATTR2
------- -------
V1_0001 V2_0001
V1_0002 V2_0002
V1_0003 V2_0003
....... .......
V1_0100 V2_0100

如果該列的不重復值小於100,則為該兩列返回null(或無值)是可以的。

這只是我原始查詢的一小部分,剩下的我可以處理。 請幫忙。

這樣的要求永遠不會到來,不是很完美,但是可以

with tab(ids, v1, v2) as (
select 1,'V1_0001', 'V2_0001' from dual union all
select 2,'V1_0001', 'V2_0001' from dual union all
select 3,'V1_0001', 'V2_0001' from dual union all
select 4,'V1_0001', 'V2_0002' from dual union all
select 5,'V1_0001', 'V2_0003' from dual union all
select 6,'V1_0002', 'V2_0004' from dual union all
select 7,'V1_0003', 'V2_0005' from dual union all
select 8,'V1_0004', 'V2_0005' from dual union all
select 9,'V1_0004', 'V2_0005' from dual union all
select 10,'V1_0005', 'V2_0006' from dual),
tab2 as (select v11, rownum r1 from
        (select distinct v1 as v11 from tab) where rownum <= 100),
tab3 as (select v22, rownum r2 from
        (select distinct v2 as v22 from tab) where rownum <= 100)
select v11, v22
  from tab2
 full outer join tab3 on (r1 = r2)

輸出:

V11                          V22
---------------------------- ----------------------------
V1_0001                      V2_0001
V1_0002                      V2_0002
V1_0003                      V2_0003
V1_0004                      V2_0004
V1_0005                      V2_0005
                             V2_0006

暫無
暫無

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

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