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 回答