SQL Server-不显示NULL值

问题描述 投票:-5回答:1
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]

sql-server tsql
1个回答
0
投票

将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
© www.soinside.com 2019 - 2024. All rights reserved.