gpt4 book ai didi

用于报告 : IF Record Does Not Exist, 的 MySQL 查询返回字段的 0 值

转载 作者:行者123 更新时间:2023-11-29 08:31:58 24 4
gpt4 key购买 nike

我正在从数据库创建堆积图。有 12 个月的数据,该系列有 3 项:A 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 将具有日期,则只需从中获取不同的日期就可以了。

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

关于用于报告 : IF Record Does Not Exist, 的 MySQL 查询返回字段的 0 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16326013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com