[英]Merging double Data in SQL with Group By
我有一个SQL查询问题
我有一个这样的表。
|| KDNRS || 坤|| ADM || BS_1 || BS_2 || DATES_S ||
|| I-111111 || WKRST || A-008 || 0 || 0 || 2014年9月18日||
|| I-222222 || EAAAAA || A-008 || 0 || 0 || 2014年9月19日||
|| I-333333 || 坚爱|| A-008 || 0 || 0 || 2014年6月11日||
|| I-111111 || WKRST || A-008 || 0 || 0 || 2014年9月22日||
|| I-444444 || DRSCH || A-008 || 0 || 0 || 2014年9月24日||
|| I-222222 || EAAAAA || A-008 || 0 || 0 || 2014年9月10日||
很抱歉显示它的方法不好。
现在我有两次录入。 问题是,我想显示所有显示的列,但用相同的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 || 坤|| ADM || BS_1 || BS_2 || DATES_S ||
|| I-222222 || EAAAAA || A-008 || 0 || 0 || 2014年9月19日||
|| I-333333 || 肯爱|| A-008 || 0 || 0 || 2014年6月11日||
|| I-111111 || WKRST || A-008 || 0 || 0 || 2014年9月22日||
|| I-444444 || DRSCH || A-008 || 0 || 0 || 2014年9月24日||
试试这个查询
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.