我需要将左桌子向右旋转:



而且左表很长,大约有1000行。问题是自动为右表中的列命名。

谢谢。

最佳答案

如果您使用的是Oracle 11g,则具有数据透视查询功能。我还没有使用过它,但是看起来您需要这样的东西:

select * from (
   select bill, goods
   from bills
)
pivot
(
   count(goods)
   for goods in ('TV', 'CD', 'phone', 'mouse')
)
order by bill


似乎要求您列出goods的可能值。但是,如果您需要即时生成此查询,则可以执行一次查询以获取不同的值,将该列表转换为以逗号分隔的字符串,然后以动态SQL或生成的脚本的形式执行实际查询。

(我希望有一个列出goods可能值的表,您可以使用该表来生成值列表,而不用查询大型事实表。)

09-26 23:40