gpt4 book ai didi

SQL LEFT JOIN 和 GROUP BY

转载 作者:行者123 更新时间:2023-12-02 03:19:09 28 4
gpt4 key购买 nike

我有一个表 T_DONNE,它就是数据导入的类型。没有= ID诽谤 = 标签

NOID    LIBELLE
1 WEB
2 FTP

客户:

CODE_CL   RS_NOM  VILLE      TYPE_CLIENT
85000 test La roche 1
85001 azerty Nantes 2
85002 qsdfg Nantes 1

LETTRE_VOIT_FINAL:这就像客户命令的项目

  NOID  CODE_CLIENT RS_NOM   VILLE_EXP  FACTURATION   DATE_CLOTUR_REEL
1 85000 test La roche 2 2016-01-07 15:02:59
2 85000 test La roche 2 2016-01-07 15:03:59
3 85001 azerty Nantes 2 2016-01-07 15:04:59

我想要的是:

CODE_CLIENT  RS_NOM    VILLE_EXP  LIBELLE  TOTAL
85000 test La roche WEB 2
85001 azerty Nantes FTP 1
85002 qsdfg Nantes WEB 0

和 SQL:

SELECT           
LETTRE_VOIT_FINAL.CODE_CLIENT
,LETTRE_VOIT_FINAL.RS_NOM
,LETTRE_VOIT_FINAL.VILLE_EXP
,T_DONNE.LIBELLE
,count (LETTRE_VOIT_FINAL.NOID) as TOTAL
FROM LETTRE_VOIT_FINAL
LEFT OUTER JOIN CLIENT ON CLIENT.CODE_CL = LETTRE_VOIT_FINAL.CODE_CLIENT
LEFT JOIN T_DONNE ON T_DONNE.NOID = CLIENT.TYPE_CLIENT

WHERE DATE_CLOTUR_REEL BETWEEN @DateDeb AND @DateFin
and FACTURATION = @FACTURATION
and STATUT_LV = 2
group by CODE_CLIENT,VILLE_EXP,RS_NOM,LIBELLE

它不太有效。它只显示:

  CODE_CLIENT  RS_NOM    VILLE_EXP   LIBELLE  TOTAL
85000 test La roche WEB 2
85001 azerty Nantes FTP 1

我认为它不起作用,因为 NULL 值和计数函数。

我想列出所有客户并计算他/她订购的元素。我的语法只显示有命令的客户端,我错过了在我的示例中没有命令的客户端是客户端 85002

我也进行了反转,但仍然得到相同的结果:

SELECT 
count (LETTRE_VOIT_FINAL.NOID) as TOTLV
,CODE_CL
,VILLE
,[RS_NOM]
,LIBELLE
FROM CLIENT
LEFT JOIN LETTRE_VOIT_FINAL ON CLIENT.CODE_CL = LETTRE_VOIT_FINAL.CODE_CLIENT
LEFT JOIN T_DONNE ON T_DONNE.NOID = CLIENT.TYPE_CLIENT

WHERE DATE_CLOTUR_REEL BETWEEN @DateDeb AND @DateFin
and FACTURATION = @FACTURATION
and STATUT_LV = 2

group by CODE_CL,VILLE,RS_NOM,LIBELLE

@DateDeb 日期时间,@DateFin 日期时间,@FACTURATION int',@DateDeb='2016-01-07 12:00:00',@DateFin='2016-01-07 23:59:59',@FACTURATION =2

最佳答案

从您的预期结果来看,您的值似乎来自 Client 表,但您的查询(和列名)显示您正在尝试从 Lettre_Voit_Final 表中获取它们。我认为这是你最大的问题。从 Client 表开始,您可以加入它 - LEFT OUTER JOIN以确保您仍然获得客户表中的所有行,即使该行在其他表中不存在也是如此。

SELECT
C.code_client,
C.rs_nom,
C.ville,
D.libelle,
COUNT(*)
FROM
Client C
INNER JOIN T_Donne D ON D.noid = C.type_client
LEFT OUTER JOIN Lettre_Voit_Final LVF ON LVF.code_client = C.code_cl
GROUP BY
C.code_client,
C.rs_nom,
C.ville,
D.libelle

一些其他注意事项...

您的列名称似乎不一致(例如,code_client 与 code_cl)。这确实会减慢开发速度并导致编码中的其他错误。

ville 与 ville_exp 之间可能存在一些重复数据(尽管我不确定)。也许其中一个是“默认”值,另一个是实际值或其他在您的数据库中有意义的值,但只是其他需要注意的事情。

关于SQL LEFT JOIN 和 GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34656128/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com