Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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_Sql - Fatal编程技术网

Mysql 如何在没有子查询的情况下在一行中进行多个和的查询?

Mysql 如何在没有子查询的情况下在一行中进行多个和的查询?,mysql,sql,Mysql,Sql,我需要一个查询,它根据一列返回四个不同的和,但不知道没有子查询怎么做 我需要做的基本上是:我有两张桌子,“caixa”和“movimentacao”。表“movimentacao”有一个字段“type”,范围从0到3,还有一个字段“value”,需要一个查询,返回属于“caixa”的每种类型的“movimentacao”的值之和,但在一行中,因此按类型分组将不起作用 到目前为止,我的解决方案是: SELECT (SELECT SUM(value) FROM movimentacao wh

我需要一个查询,它根据一列返回四个不同的和,但不知道没有子查询怎么做

我需要做的基本上是:我有两张桌子,“caixa”和“movimentacao”。表“movimentacao”有一个字段“type”,范围从0到3,还有一个字段“value”,需要一个查询,返回属于“caixa”的每种类型的“movimentacao”的值之和,但在一行中,因此按类型分组将不起作用

到目前为止,我的解决方案是:

SELECT
    (SELECT SUM(value) FROM movimentacao where id_caixa = x.id_caixa and type = 0)
    (SELECT SUM(value) FROM movimentacao where id_caixa = x.id_caixa and type = 1)
    (SELECT SUM(value) FROM movimentacao where id_caixa = x.id_caixa and type = 2)
    (SELECT SUM(value) FROM movimentacao where id_caixa = x.id_caixa and type = 3)
FROM caixa x

有没有一种方法可以在没有这四个子查询的情况下使用联接来完成此操作?

您可以使用聚合来完成此操作:

SELECT SUM( CASE WHEN m.type = 0 THEN x.value END ) as type_0,
       SUM( CASE WHEN m.type = 1 THEN x.value  END ) as type_1,
       SUM( CASE WHEN m.type = 2 THEN x.value  END ) as type_2,
       SUM( CASE WHEN m.type = 3 THEN x.value  END ) as type_3
FROM caixa x JOIN
     movimentacao m
     ON x.id_caixa = m.id_caixa;

这将如何求
列的和?@mypetlion。现在可以了。如果我使用两个依赖于
caixa
的表,而不是一个,每个表都有自己的
类型
字段,那么这行得通吗?@ayrton。那要看情况。如果您还有其他问题,您应该以新问题的形式提出,并提供适当的样本数据和期望的结果。