Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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/5/sql/78.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报表查询:如果记录不存在,则字段返回0_Mysql_Sql - Fatal编程技术网

MySQL报表查询:如果记录不存在,则字段返回0

MySQL报表查询:如果记录不存在,则字段返回0,mysql,sql,Mysql,Sql,我正在从数据库创建堆叠图表。有12个月的数据,系列中有3项:AA和AAA。要正确填充堆叠图表,需要为所有12个月的每个系列找到一个值 我查询的数据库的问题是,每个月都找不到每个系列。本质上,当序列值为0时,它不会记录在数据库中 我需要知道当第1个月、第2个月、第3个月等的a、AA或AAA不存在时,如何返回值0。因此,3个系列和12个月的查询结果将返回36个总值 谢谢,, 埃里克 重要提示:我在下面发布的查询仅供参考,我不是要求您完全编辑我的查询。如果我能得到正确函数/代码的输入,我可以应用它 当

我正在从数据库创建堆叠图表。有12个月的数据,系列中有3项:AA和AAA。要正确填充堆叠图表,需要为所有12个月的每个系列找到一个值

我查询的数据库的问题是,每个月都找不到每个系列。本质上,当序列值为0时,它不会记录在数据库中

我需要知道当第1个月、第2个月、第3个月等的a、AA或AAA不存在时,如何返回值0。因此,3个系列和12个月的查询结果将返回36个总值

谢谢,, 埃里克

重要提示:我在下面发布的查询仅供参考,我不是要求您完全编辑我的查询。如果我能得到正确函数/代码的输入,我可以应用它

当前查询

select    E.DES_CARTERA_CC      Fund_Name,
          DATE_FORMAT(D.F_ULT_CIERRE_MENSUAL, "%d/%m/%Y") Date_as_of,
          DATE_FORMAT(A.F_CORTE, "%Y/%m")     Date_of_distribution_SORT,
          DATE_FORMAT(A.F_CORTE, "%m/%Y")     Date_of_distribution,
          C.DES_CALIFICACION    Item_description,
          ROUND(SUM(A.POR_CALIFICACION), 2)   Percentage_of_distribution

from      det_calificaciones A
          Join mcalificaciones    C on ( A.ID_CALIFICACION = C.ID_CALIFICACION )
          Join mcarteras          E on ( A.ID_CARTERA      = E.ID_CARTERA )
          Join mpaises            D on ( E.COD_PAIS        = D.COD_PAIS )

where     A.ID_CARTERA = @ID_CARTERA
AND       A.F_CORTE BETWEEN DATE_ADD(D.F_ULT_CIERRE_MENSUAL, INTERVAL -11 MONTH) AND D.F_ULT_CIERRE_MENSUAL

GROUP BY    A.F_CORTE, C.DES_CALIFICACION

ORDER BY    Date_of_distribution_SORT ASC

通常,通过交叉连接图形的两个轴来实现这一点,这意味着

select x.Col1, y.DateCol, ... other columns ...
from (select distinct Col1 from tbl1) x
cross join (select distinct DateCol from tbl2) y

LEFT JOIN (... original query...) z ON z.col1 = x.col1 and z.datecol = y.datecol
前两个集合生成所需的所有行,并将原始结果移植到这些行上

使用某种类型的
日期
表来获取月份更容易,或者如果tbl2有日期,只需从中提取不同的日期就可以了


将整个原始查询放入左联接是一种简单的方法,您可以在一个平面查询中轻松地将左联接放入所有涉及的表。

也许您应该首先显示当前查询,并显示一些DDL来创建表(至少可以查看您的结构)。一些示例数据也会有很大帮助。我发布了这个查询,尽管我认为没有必要。我只需要知道如何执行该函数,然后我就可以应用到更复杂的查询。谢谢,我会尝试应用它。不幸的是,我不是SQL高手。