【问题标题】:How to display the result by columns?如何按列显示结果?
【发布时间】:2018-09-08 10:55:32
【问题描述】:

我有几个类似的问题。并希望按列获得结果。可能吗?我有什么办法? “UNION”的语法是否正确?

例子:

select(
(select total, amount FROM table_1 where sale_type = "type_1" GROUP BY 
total WITH ROLLUP),
(select total, amount FROM table_1 where sale_type = "type_2" GROUP BY 
total WITH ROLLUP),
(select total, amount FROM table_1 where sale_type = "type_3" GROUP BY 
total WITH ROLLUP),
(select total, amount FROM table_1 where sale_type = 
"type_4" GROUP BY 
total WITH ROLLUP),ORDER BY total);

谢谢!

结果表:

 total    type_1     type_2   type_3   type_4
  ...      ...        ...      ...      ...

【问题讨论】:

  • 请提供一些示例数据来解释您的问题。
  • 您没有包含数据,您包含了一个零解释的复杂查询。请通过显示样本输入数据和预期输出来告诉我们您的问题。如果您认为它不明显,请解释我们如何获得该输出。
  • 请显示来自table_1 表的实际样本输入数据。然后显示预期的输出。

标签: mysql sql database join select


【解决方案1】:

这个答案是推测性的,因为您没有向我们展示任何样本数据,但我可能会建议您需要基于 sale_type 的条件总和。如果是这样,那么以下查询应该符合您的要求:

SELECT
    total,
    SUM(CASE WHEN sale_type = 'type_1' THEN amount ELSE 0 END) AS sum_1,
    SUM(CASE WHEN sale_type = 'type_2' THEN amount ELSE 0 END) AS sum_2,
    SUM(CASE WHEN sale_type = 'type_3' THEN amount ELSE 0 END) AS sum_3,
    SUM(CASE WHEN sale_type = 'type_4' THEN amount ELSE 0 END) AS sum_4
FROM table_1
GROUP BY total WITH ROLLUP;

【讨论】:

  • 谢谢。在实践中,我的查询更加困难。它与接受 sales_type 相同。我更新了。可能我需要重复此查询,更改 sale_type 并使用 UNION?
  • 如果我不需要 sum,什么查询更好?
  • 我添加了一个表格形式的结果
猜你喜欢
  • 2016-05-07
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多