【问题标题】:Getting desired output from Rollup从汇总中获取所需的输出
【发布时间】:2016-03-13 00:56:16
【问题描述】:

你能帮我得到下面的输出吗

数据脚本

        create table temp(id number,first_name varchar2(10),last_name varchar2(10),order_id varchar2(2));
            insert into temp values(1,'Ram1','Shayam1','O1');
            insert into temp values(1,'Ram1','Shayam1','O2');
            insert into temp values(2,'Ram2','Shayam2','O1');
            insert into temp values(2,'Ram2','Shayam2','O2');
            insert into temp values(3,'Ram3','Shayam3','O1');
            insert into temp values(4,'Ram4','Shayam4','O1');
            insert into temp values(4,'Ram4','Shayam4','O2');
            insert into temp values(4,'Ram4','Shayam4','O3');
            insert into temp values(5,'Ram5','Shayam5','O1');
            insert into temp values(5,'Ram5','Shayam5','O2');
            insert into temp values(5,'Ram5','Shayam5','O3');
            insert into temp values(6,'Ram6','Shayam6','O1');
            insert into temp values(7,'Ram7','Shayam7','O1');

输出

id   first_name   last_name  order_id  count
--------------------------------------------
1      Ram1        Shayam1    O1       1
1      Ram1        Shayam1    O2       1
1                                      2  --total number of id,grp by id
2      Ram2        Shayam2    O1       1
2      Ram2        Shayam2    O2       1
2                                      2
3      Ram3        Shayam3    O1       1
3                                      1
4      Ram4        Shayam4    O1       1
4      Ram4        Shayam4    O2       1
4      Ram4        Shayam4    O3       1
4                                      3
5      Ram5        Shayam5    O1       1
5      Ram5        Shayam5    O2       1
5      Ram5        Shayam5    O3       1
5      Ram5        Shayam5    O4       1
5                                      4
6      Ram6        Shayam6    O1       1
6                                      1      
7      Ram7        Shayam7    O1       1
7                                      1
                                       7  --total distinct id

我尝试过使用 rollup,但我无法通过 rollup 获得最后一个完全不同的 id

SQLFIDDLE

【问题讨论】:

    标签: oracle oracle11g group-by rollup


    【解决方案1】:

    根据你想要的输出应该是这样的:

    SELECT id,
      first_name,
      last_name,
      order_id,
      CASE
        WHEN grouping(id) = 1
        THEN COUNT(DISTINCT id)
        ELSE COUNT(*)
      END res
    FROM temp
    GROUP BY grouping sets ((id ,first_name ,last_name ,order_id),(id),());
    

    【讨论】:

    • 感谢您的及时回复,但我们仍然无法从您给定的查询中获得不同的 id
    • @Manu 对不起,我错过了这个条件。已编辑答案,您现在可以检查一下吗?
    【解决方案2】:

    试试 Bellow Code,希望你能满足我的回答。

     select id,max(first_name),max(last_name),order_id,count(order_id) from temp
        where id is not null
        group by cube(id,order_id)
        order by id 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      相关资源
      最近更新 更多