0

2 つのクエリがあります。

select zam_klt_id,zam_order_date, count(*) as sum from orders
group by rollup (zam_order_date,zam_klt_id);

出力を生成します:

ZAM_KLT_ID ZAM_order_date        SUM
---------- ------------------- ----------
  1002 98/03/13                     1 
       98/03/13                     1 
  1004 98/03/14                     1 
       98/03/14                     1 
  1003 98/09/11                     1 
       98/09/11                     1 
  1003 99/01/05                     1 
       99/01/05                     1 
  1003 99/03/01                     1 
       99/03/01                     1 
  1003 99/07/26                     1 
       99/07/26                     1 
  1003 99/10/30                     1 
       99/10/30                     1 
  1002 00/05/08                     1 
       00/05/08                     1 
  1004 00/06/14                     1 
       00/06/14                     1 
       00/07/12                     1 
       00/07/12                     1 
  1000 00/12/10                     2 
       00/12/10                     2 
  1004 00/12/21                     1 
       00/12/21                     1 
                                   13 

これは問題ありません。すべての日付の下に、次のような短い要約 (カウント) があります。

  1000 00/12/10                     2 
       00/12/10                     2 

ただし、毎年何人のクライアントが注文したかを知りたかったので、前のクエリを変更しました(zam_order_dateはto_char(zam_order_date、 'yyyy')に変更されました)

select zam_klt_id,to_char(zam_order_date,'yyyy'), count(*) as sum from orders
group by rollup ((to_char(zam_order_date,'yyyy'),zam_klt_id));

出力が生成されます

ZAM_KLT_ID TO_CHAR(ZAM_order_date,'YYYY')        SUM
---------- ----------------------------------- ----------
  1002 1998                                         1 
  1003 1998                                         1 
  1004 1998                                         1 
  1003 1999                                         4 
       2000                                         1 
  1000 2000                                         2 
  1002 2000                                         1 
  1004 2000                                         2 
                                                   13 

9 rows selected 

今回は、すべての日付 (この場合は年) の下に要約はありません。出力は次のようになるはずです。

ZAM_KLT_ID TO_CHAR(ZAM_order_date,'YYYY')        SUM
---------- ----------------------------------- ----------
  1002 1998                                         1 
  1003 1998                                         1 
  1004 1998                                         1 
      *1998*                                         *3*
etc

なぜ今回は集計が追加されていないのか、to_char関数と関係があるのでしょうか?

4

0 に答える 0