Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有多个和值的MySQL查询分组_Mysql - Fatal编程技术网

具有多个和值的MySQL查询分组

具有多个和值的MySQL查询分组,mysql,Mysql,如果查看此内容,您将看到结果数据按年份和类型分组,这意味着每年有2行。我只想按年份分组,并在同一行显示A型和B型的总和 有人能告诉我如何修改此查询中的sum语句,以便第一个sum仅用于A类型,第二个sum用于B类型吗?谢谢。如果你只需要这两个栏目,那就相当容易了 SELECT Year, SUM(CASE WHEN Type='A' THEN Amt ELSE 0 END) TypeA, SUM(CASE WHEN Type='B' THEN Amt ELSE 0 END) TypeB

如果查看此内容,您将看到结果数据按年份和类型分组,这意味着每年有2行。我只想按年份分组,并在同一行显示A型和B型的总和


有人能告诉我如何修改此查询中的sum语句,以便第一个sum仅用于A类型,第二个sum用于B类型吗?谢谢。

如果你只需要这两个栏目,那就相当容易了

SELECT Year, 
  SUM(CASE WHEN Type='A' THEN Amt ELSE 0 END) TypeA,
  SUM(CASE WHEN Type='B' THEN Amt ELSE 0 END) TypeB
FROM YourTable
GROUP BY Year


…或者更详细一点的标准SQL

如果您只需要这两列,那么这相当容易

SELECT Year, 
  SUM(CASE WHEN Type='A' THEN Amt ELSE 0 END) TypeA,
  SUM(CASE WHEN Type='B' THEN Amt ELSE 0 END) TypeB
FROM YourTable
GROUP BY Year

…或者更详细一点的标准SQL

这个怎么样:

或者,您可以使用标准SQL的
CASE
语句,但稍长一些,所以我选择了这个版本。

这个怎么样:


或者,您可以使用标准SQL的
CASE
语句,但稍长一些,所以我选择了这个版本。

非常感谢。这正是我想要的。不过,我不太懂语法。这意味着什么:金额*(Type='A')???*做什么?@Danielatard改为可读性更强的标准SQL,前者是特定于MySQL的,更难阅读。太棒了。我理解冗长的版本。再次感谢。让我度过了一个美好的夜晚!非常感谢。这正是我想要的。不过,我不太懂语法。这意味着什么:金额*(Type='A')???*做什么?@Danielatard改为可读性更强的标准SQL,前者是特定于MySQL的,更难阅读。太棒了。我理解冗长的版本。再次感谢。让我度过了一个美好的夜晚!谢谢你,沃尔夫。我从你的帖子中学到了很多。谢谢,沃尔夫。我从你的帖子中学到了很多。谢谢。