cas=(
SELECT CONVERT(DECIMAL(15, 2), sum(somme))
AND CAST(DATEP AS DATE) BETWEEN DATE(YEAR, -1, CAST(@DATED AS DATE))
AND DATEAD(YEAR, -1, CAST(@DAT AS DATE))
GROUP BY etab,
libelle
我想要一个解决方案,使查询不返回空值。
![在此处输入图片描述] [1]
将CA_AN子查询移至交叉应用,并检查where子句中的n不为空
SELECT
REGION = et_region,
[STORE CODE] = e.et_etablissement,
[STORE NAME] = et_libelle,
CA = CONVERT(DECIMAL(15,2),SUM(gl_totalttcdev)),
NBRTICKETS = CONVERT(DECIMAL(15,0),COUNT(distinct(GL_NUMERO))),
NBRARTICLES = CONVERT(DECIMAL(15,0),SUM(GL_QTEFACT)),
UPT = CONVERT(DECIMAL(15,2),SUM(GL_QTEFACT)/COUNT(DISTINCT(GL_NUMERO))) ,
PM = CONVERT(DECIMAL(15,2),SUM(gl_totalttcdev)/COUNT(DISTINCT(GL_NUMERO))),
CA_AN = MAX(CA_AN.caan)
FROM piece
LEFT JOIN ligne ON
gl_souche = gp_souche
AND gl_naturepieceg = gp_naturepieceg
AND gl_numero = gp_numero
AND gl_indiceg = gp_indiceg
LEFT JOIN etabliss AS e ON
gp_etablissement = e.et_etablissement
LEFT JOIN ARTICLE ON
GL_CODEARTICLE = ARTICLE.GA_CODEARTICLE
CROSS APPLY (
SELECT
caan = CONVERT(DECIMAL(15,2),sum(gl_totalttcdev))
FROM piece
LEFT JOIN ligne ON
gl_souche = gp_souche
AND gl_naturepieceg = gp_naturepieceg
AND gl_numero = gp_numero
AND gl_indiceg = gp_indiceg
LEFT JOIN etabliss AS e1 ON
e1.et_etablissement = gp_etablissement
left join ARTICLE on
GL_CODEARTICLE = ARTICLE.GA_CODEARTICLE
where
gp_naturepieceg = 'FFO'
AND gl_typearticle <> ''
AND gl_typearticle <> 'FI'
AND e1.et_etablissement = e.et_etablissement
AND CAST(GP_DATEPIECE AS DATE) BETWEEN DATEADD(YEAR,-1,CAST(@DATED AS DATE)) AND DATEADD(YEAR,-1,CAST(@DATEF AS DATE))
GROUP BY
et_etablissement,
et_libelle
) CA_AN
WHERE
gp_naturepieceg = 'FFO'
AND (e.et_etablissement NOT IN ('F20','F44','R05','F40','F47'))
AND gl_typearticle <> ''
AND gl_typearticle <> 'FI'
AND et_LIBELLE LIKE @MAG
AND CAST(GP_DATEPIECE AS DATE) BETWEEN CAST(@DATED AS DATE) AND CAST(@DATEF AS DATE)
AND CA_AN.caan IS NOT NULL
GROUP BY
et_region,
et_etablissement,
et_libelle
HAVING SUM(gl_totalttcdev) > 0
ORDER BY
et_region,
CA_AN DESC,
et_etablissement