2014-10-16 59 views
0

下面的查询返回一年中所有组的热度。查询返回特定表列中的所有值

如何返回IND_GRUPO中存在但按月份分组的所有组,如果当前月份不存在该组,则该名称应该出现,但是该索引值应为0.应保留所有联接。

SELECT SUM(p.valor), c.nm_grupo, c.cd_grupo, YEAR(p.dt_emissao) 
FROM ind_receita p 
JOIN ind_equipto o ON p.cd_equipto = o.cd_equipto 
JOIN ind_grupo c ON o.cd_grupo = c.cd_grupo 
WHERE YEAR(p.dt_emissao) = YEAR(GETDATE()) 
GROUP BY YEAR(p.dt_emissao), c.nm_grupo, c.cd_grupo 
ORDER BY 1 DESC 

回答

0

试试这个:

SELECT c.nm_grupo, c.cd_grupo, YEAR(GETDATE()), 
    (SELECT SUM(p.valor) 
    FROM ind_receita p 
    JOIN ind_equipto o ON p.cd_equipto = o.cd_equipto 
    JOIN ind_grupo c2 ON o.cd_grupo = c2.cd_grupo 
    WHERE c2.cd_grupo = c.cd_grupo 
    AND YEAR(p.dt_emissao) = YEAR(GETDATE())) AS valor 
FROM ind_grupo c 
+0

工作正常,我试图用CTE得到的结果,但你的做法是更好的 – 2014-10-16 17:28:04

+0

@Lucas_Santos:好吧,有一个愉快的一天;) – 2014-10-16 17:29:38

相关问题