sql语句根据某字段分组后,如何实现如果各组之间有相似值,就将他们的count合并,具体见详情。。

SELECT left(SHIP_TO_STATE,4),count(*) from SHIPMENT_HEADER sh1inner JOIN SHIPMENT_DETAIL sd1 on sh1.SHIPMENT_ID=sd1.SHIPMENT_IDWHERE sh1.CREATE_DATE_TIME>='2017-01-01'and sh1.CREATE_DATE_TIME<='2017-12-15'and sh1.LEADING_STS=900GROUP BY left(SHIP_TO_STATE,4)判断ship_to_state里一旦有相似的值,他们count的结果能合并。。即下图将包含北京的合并

没有办法自动判断,只能你自己处理

比如,取left(SHIP_TO_STATE,2)

SELECT left(SHIP_TO_STATE,2),count(*)
from SHIPMENT_HEADER sh1
inner JOIN SHIPMENT_DETAIL sd1 on sh1.SHIPMENT_ID=sd1.SHIPMENT_ID
WHERE sh1.CREATE_DATE_TIME>='2017-01-01' and sh1.CREATE_DATE_TIME<='2017-12-15' and sh1.LEADING_STS=900
GROUP BY left(SHIP_TO_STATE,2)追问

这个我试过的,但是表里面有的数据里有空格,后面查出来的数据空格也算成一个字符了,怎么过滤掉空格呢,用replace(left(SHIP_TO_STATE,2),'','')没用

追答

把空格写出来啊:
replace(left(SHIP_TO_STATE,2),' ','')
如果不行说明不是空格,是其它不可见字符,可以查ascii码看是什么东西

温馨提示:答案为网友推荐,仅供参考
相似回答