oracle分析查询以对行进行分组

wnavrhmk  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(276)

我有一个表有两列tsf\u no和item,一个tsf\u no可以有多个item。我想有一个查询,将分配序列号(如thrdïid)每n行。这个n是一个变量。我已经写了一个还没有完全解决的问题。注:4为n(变量)。它为每个n行分配序列号,但是tsf_no 100018628942在1和2中的thrd_id中都有,这是我不想要的。
预期结果

如果n=2,则结果为

WITH 
    thrd_tbl AS (
    SELECT DISTINCT tsf_no,
                    thrd_id,
                    item
      FROM (SELECT tsf_no,
                   item,
                   CEIL(DENSE_RANK() OVER (ORDER BY tsf_no,item)/**4**) thrd_id
              FROM tsf_item))
    SELECT * FROM thrd_tbl;

    CREATE TABLE TSF_ITEM(TSF_NO NUMBER(12),
                          ITEM   VARCHAR2(25))

    /
    REM INSERTING into TSF_ITEM
    SET DEFINE OFF;
    Insert into TSF_ITEM (TSF_NO,ITEM) values (100018628027,'313549828');
Insert into TSF_ITEM (TSF_NO,ITEM) values (100018628027,'313815940');
Insert into TSF_ITEM (TSF_NO,ITEM) values (100018628027,'314075650');
Insert into TSF_ITEM (TSF_NO,ITEM) values (100018628942,'308708641');
Insert into TSF_ITEM (TSF_NO,ITEM) values (100018628942,'308708688');
Insert into TSF_ITEM (TSF_NO,ITEM) values (100018628942,'309959701');
Insert into TSF_ITEM (TSF_NO,ITEM) values (100018630248,'313870503');
Insert into TSF_ITEM (TSF_NO,ITEM) values (100018630248,'313870507');
Insert into TSF_ITEM (TSF_NO,ITEM) values (100018630289,'312547432');
Insert into TSF_ITEM (TSF_NO,ITEM) values (100018630289,'312547433');
Insert into TSF_ITEM (TSF_NO,ITEM) values (100018630289,'312547437');
nfs0ujit

nfs0ujit1#

我有点困惑。你的结果不需要任何“4”。您可以使用:

DENSE_RANK() OVER (ORDER BY tsf_no)

也许这能解决你的问题。如果没有,你应该提供更清晰的数据来说明你想做什么。

相关问题