| ■No68918 (魔界の仮面弁士) に追記 >>このSQLだと、これでは毎回日時を入力しなければならないので大変です。(数年分) > クロス集計ですよね。 > データを「列」方向に展開しようとすれば、どうしてもそうなってしまうでしょう。
Oracle 11g 以降であれば、PIVOT を使うこともできます。 列を指定するために、IN で日付を列挙する必要があるため、手間は変わりませんが…。
SELECT * FROM ( SELECT 商品, コード, TRUNC( 出荷日時 - INTERVAL '8' HOUR, 'DD' ) AS 出荷日 FROM TBL ) PIVOT ( COUNT(*) FOR 出荷日 IN ('2013-11-23', '2013-11-24') ) ORDER BY コード, 商品 DESC |