我正在从数据库创建堆积图表。有12个月的数据,系列中有3个项目:A AA和AAA。为了正确填充堆积图表,它需要为所有12个月中的每个系列找到三个系列中每个系列的值。
我要查询的数据库问题是,每个月都找不到每个系列。实质上,当序列值为0时,它根本不会记录在数据库中。
我需要知道当A,AA或AAA在第1个月,第2个月,第3个月等时不存在时如何返回0值。因此,3个系列和12个月的查询结果将会返回36总值。
谢谢你, ERIK
重要提示:我发布以下查询仅供参考,我不会要求您完全编辑我的查询。如果我能输入正确的功能/代码,我可以申请。
CURRENT QUERY
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
答案 0 :(得分:2)
通常,您可以通过CROSS连接图表的两个轴来执行此操作,这意味着
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
前两组产生您需要的所有行,并且原始结果被移植。
使用某种dates
表来获取月份更容易,或者如果tbl2具有日期,只需从中获取不同的日期即可。
将整个原始查询放入LEFT JOIN是一种天真的方法,您可以轻松地将JOFT JOIN连接到一个平面查询中的所有相关表中。