0

曜日ごとに利用可能なさまざまなタイプの製品の数を取得するために、次のクエリがあります。

select product_type, availDate, quantity 
from myTable 
where availDate between '2013-02-15' and '2013-02-21' 
order by product_type, availDate

これにより、次の結果が得られます...

product_type  |  availDate  |  quantity
--------------|-------------|----------
type1         |  2013-02-15 |  2
type1         |  2013-02-17 |  1
type1         |  2013-02-18 |  1
type1         |  2013-02-21 |  3
type2         |  2013-02-15 |  1
type2         |  2013-02-16 |  2
type2         |  2013-02-17 |  1
type2         |  2013-02-18 |  2
type2         |  2013-02-19 |  1
type2         |  2013-02-20 |  1

実際に表示したい方法は次のとおりです。

product_type  | 2013-02-15 | 2013-02-16 | 2013-02-17 | 2013-02-18 | 2013-02-19 | 2013-02-20 | 2013-02-21
--------------|------------|------------|------------|------------|------------|------------|-----------
type1         | 2          | -          | 1          | 1          | -          | -          | 3
type2         | 1          | 2          | 1          | 2          | 1          | 1          | -

クエリからこれを行うことは可能ですか、それとも他の方法で結果を操作する必要がありますか??

ありがとう

編集:

これはOracle SQLで必要であると言われました

4

2 に答える 2

1

クエリを使用できPIVOTます。この単純なバージョンの欠点は、クエリ内のすべての興味深い日付をリストする必要があることです。

WITH cte AS (
  SELECT "product_type", "availDate", "quantity" 
  FROM myTable 
)
SELECT * FROM cte
PIVOT (SUM("quantity") AS Quantity for ("availDate") IN
       ('15-Feb-2013',
        '16-Feb-2013',
        '17-Feb-2013',
        '18-Feb-2013',
        '19-Feb-2013'))
ORDER BY "product_type"

テスト用の SQLfiddle

于 2013-01-24T15:32:31.963 に答える
0

少しでも助けになれば、私はこれを見つけました... http://www.artfulsoftware.com/infotree/queries.php#78

役に立つかもしれません。

よろしく、ウェスティ。

于 2013-01-24T15:07:11.087 に答える