将SQL中的双精度数据与分组依据合并

时间:2015-10-07 14:36:32

标签: mysql sql

我遇到SQL查询问题

我有一张这样的表。

|| KDNRS || KUND || ADM || BS_1 || BS_2 || DATES_S ||
|| I-111111 || WKRST || A-008 || 0 || 0 || 18.09.2014 ||
|| I-222222 || EAAAAA || A-008 || 0 || 0 || 19.09.2014 ||
|| I-333333 || KENGAI || A-008 || 0 || 0 || 06.11.2014 ||
|| I-111111 || WKRST || A-008 || 0 || 0 || 22.09.2014 ||
|| I-444444 || DRSCH || A-008 || 0 || 0 || 24.09.2014 ||
|| I-222222 || EAAAAA || A-008 || 0 || 0 || 10.09.2014 ||

很抱歉显示它的方式不好。

现在我有两个条目。问题是,我想显示所有显示的列,但总结了相同的KDNRS和KUND。由于我的查询,ADM,BS_1和BS_2将始终相同。另外我也需要查询日期,但合并后显示哪个并不重要

我的第一个解决方案是

SELECT t_kds.KDNRS, 
t_stam.KUND, 
t_kds.ADM,
t_kds.BS_1, 
t_kds.BS_2, 
t_kds.DATE_S

FROM t_kds INNER JOIN t_stam ON t_kds.KDNRS = t_stam.KDNRS

GROUP BY t_kds.KDNRS, t_stam.KUND, t_kds.ADM, t_kds.BS_1, t_kds.BS_2, t_kds.DATE_S

WHERE (((t_kds.[ADM])=[Bitte ADM eingeben]) AND ((t_kds.BS_1)=0) AND ((t_kds.BS_2)=0) AND ((Max(t_kds.DATE_S))>#1/1/2014#))

ORDER BY t_kds.KDNRS;

但那没用。

之后我尝试了这个。

SELECT t_kds.KDNRS, 
t_stam.KUND, 
t_kds.ADM,
t_kds.BS_1, 
t_kds.BS_2, 
Max(t_kds.DATE_S) AS MaxDATE_S

FROM t_kds INNER JOIN t_stam ON t_kds.KDNRS = t_stam.KDNRS

GROUP BY t_kds.KDNRS, t_stam.KUND, t_kds.[ADM], t_kds.BS_1, t_kds.BS_2

HAVING (((t_kds.[ADM])='A-008') AND ((t_kds.BS_1)=0) AND ((t_kds.BS_2)=0) AND ((Max(t_kds.DATE_S))>#1/1/2014#))

ORDER BY t_kds.KDNRS;

使用此代码它似乎正在工作,但我不确定...这段代码好吗?我有多达1000条记录,用肉眼比较它们是不可能的 表结果是
|| KDNRS || KUND || ADM || BS_1 || BS_2 || DATES_S ||
|| I-222222 || EAAAAA || A-008 || 0 || 0 || 19.09.2014 ||
|| I-333333 || KENGAI || A-008 || 0 || 0 || 06.11.2014 ||
|| I-111111 || WKRST || A-008 || 0 || 0 || 22.09.2014 ||
|| I-444444 || DRSCH || A-008 || 0 || 0 || 24.09.2014 ||

1 个答案:

答案 0 :(得分:0)

尝试此查询

SELECT t_kds.KDNRS, 
       t_stam.KUND, 
       t_kds.ADM,
       t_kds.BS_1, 
       t_kds.BS_2, 
       SUBSTRING_INDEX(GROUP_CONCAT(t_kds.DATE_S ORDER BY t_kds.DATE_S DESC),',',1) AS date_val
    FROM t_kds
    GROUP BY t_kds.KDNRS