【问题标题】:Generating cross tab reports im oracle?在 oracle 中生成交叉表报告?
【发布时间】:2014-02-05 04:34:39
【问题描述】:

如何查询交叉表等报表? 例如我的表如下所示

+----+--+--+--+
|Name|v1|v2|v3|
+----+--+--+--+
|A   |12|10|5 |
+----+--+--+--+
|B   |10|5 |20|
+----+--+--+--+

现在我的查询应该给我以下?

+-----+--+--+--+
|Name |v1|v2|v3|
+-----+--+--+--+
|A    |12|10|5 |
+-----+--+--+--+
|B    |10|5 |20|
+-----+--+--+--+
|Total|22|15|25|
+-----+--+--+--+

感谢您的帮助

【问题讨论】:

  • MySQL 还是 oracle?

标签: sql oracle oracle11g crosstab


【解决方案1】:

使用UNION 连接行:(MYSQL 代码)

SELECT name,v1,v2,v3 FROM my_table 
UNION ALL 
SELECT "total",sum(v1) as v1 ,sum(v2) as v2 ,sum(v3) as v3 FROM my_table;

在这里观看它的工作:sqlfiddle

【讨论】:

    【解决方案2】:

    以下是您查询 mysql 数据库的类似示例:

    SELECT year, SUM(profit) FROM sales GROUP BY year WITH ROLLUP;
    +----+-----------+
    |year|SUM(profit)|
    +----+-----------+
    |2000|4525       |
    +----+-----------+
    |2001|3010       |
    +----+-----------+
    |NULL|7535       |
    +----+-----------+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-17
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-23
      相关资源
      最近更新 更多