所以我有这个我的sql查询,但它并没有完全正常工作,它显示在shringnt出现的开头空值,并重复一些行,我想要我做错了什么:
SELECT cd.id, cd.dt_ini_camp, cd.dt_fim_camp, cd.descricao, l.id_estab,
l.quantidade,
(SELECT SUM(quantidade) FROM lin_doc l WHERE l.id_cab_doc = cd.id) AS qtd
FROM cab_doc cd
RIGHT JOIN lin_doc l
ON l.id_cab_doc = cd.id
AND cd.id_tipo_doc = 1
输出:
descricao id_estab quantidade QTD
NULL 12 362.000 NULL
NULL 19 452.000 NULL
NULL 14 154.000 NULL
NULL 05 492.000 NULL
Outras Campanhas 03 229.000 3971.000 Outras Campanhas 05 215.000 4388.000NULL 06 162.000 NULL
NULL 17 22.000 NULL
NULL 34 39.000 NULL
NULL 13 63.000 NULL
NULL 28 162.000 NULL
NULL 29 43.000 NULL
NULL 03 190.000 NULL
Outras Campanhas 33 71.000 3971.000NULL 02 13.000 NULL
NULL 08 170.000 NULL
NULL 06 409.000 NULL
所需的输出:
descricao id_estab quantidade QTD
Outras Campanhas 05 215.000 4388.000NULL 06 162.000 NULL
NULL 17 22.000 NULL
NULL 34 39.000 NULL
NULL 13 63.000 NULL
NULL 28 162.000 NULL
NULL 29 43.000 NULL
NULL 03 190.000 NULL
Outras Campanhas 33 71.000 3971.000NULL 02 13.000 NULL
NULL 08 170.000 NULL
NULL 06 409.000 NULL
答案 0 :(得分:0)
首先我要说的是,当你可以在同一个查询中得到总和时,不需要做相关的子查询
SELECT cd.id, cd.dt_ini_camp, cd.dt_fim_camp, cd.descricao, l.id_estab,
l.quantidade,
COALESCE(SUM(l.quantidade) )AS qtd
FROM cab_doc cd
RIGHT JOIN lin_doc l
ON l.id_cab_doc = cd.id
AND cd.id_tipo_doc = 1
GROUP BY cd.id
对于null结果,您可以使用COALESCE()
,因为您没有显示表定义所以我使用了GROUP BY cd.id