0

次のように、年ごとに月とカードの種類ごとに orderdata グループを提示する必要があります。

MONTH   CARDTYPE ORDER_CNT
201201  AMEX    10,835
201201  DISC    6,542
201201  MC  2,675
201202  AMEX    66,817
201202  DISC    36,581
201202  MC  165,683

データを取得できるテーブルには、月ごとに注文があります。次の SQL を使用して、その月の各日の注文数をカードの種類別にグループ化しました。

(

SELECT cardtype,orderdate,COUNT (distinct(orderserialno)) FROM tablename
where orderdate between '01-jan-2012' and '31-dec-2012'
GROUP BY cardtype,orderdate

)

月ごとにグループ化する必要があるため、caseステートメントを使用してこのデータを上記の形式で表示する必要がありますが、それはできません。誰か助けてください。

ありがとう

4

3 に答える 3

1

GROUP BY次のようにセクションを変更できます。

GROUP BY cardtype, trunc(orderdate, 'MM')

orderdateの代わりにSELECT使用する必要があるセクションでto_char(orderdate, 'YYYYMM')

于 2013-05-15T05:58:46.753 に答える
1
SELECT * FROM
(
 SELECT to_number(substr('201201', 1, 4)) curr_year
      , to_number(substr('201201', -2, 2)) curr_month
      , 'AMEX' card_type FROM dual
  UNION ALL
 SELECT to_number(substr('201202', 1, 4))
      , to_number(substr('201202', -2, 2))
     , 'DISC' FROM dual
) 
ORDER BY curr_year, curr_month, card_type
/

CURR_YEAR    CURR_MONTH    CARD_TYPE
------------------------------------
2012         1             AMEX
2012         2             DISC
于 2013-05-14T18:31:51.877 に答える