我有以下问题-我有一个包含4列的表:Id,名称,InsertTime,UpdateTime。我想为每个名称计数(不是唯一的!)有多少个具有相同名称的名称具有不同的InsertTime或UpdateTime。例如,如果我有以下数据:
ID NAME INSERTED_TIME UPDATE_TIME
1 maya 21-12-2015 21-12-2015
2 tal 22-12-2015 21-12-2015
3 maya 21-09-2015 21-12-2015
4 mark 21-12-2015 21-12-2015
5 mark 21-12-2015 21-12-2015
我希望结果是:
NAME COUNT
maya 1
tal 0
mark 0
外植体:“ maya”有1个重复项,具有不同的InsertTime或UpdateTime。“ tal”没有重复项。而且“标记”具有重复项,但是InsertTime和UpdateTime相同,因此不计在内。
我试过了:
SELECT COUNT(*)
FROM table t1
JOIN table t2 on t1.NAME=t2.NAME
where (t1.INSERTED_TIME<>t2.INSERTED_TIME or t1.UPDATE_TIME<>t2.UPDATE_TIME)
但这会返回重复项。我还使用GROUP BY尝试了不同的方法-到目前为止没有任何效果。
任何帮助,将不胜感激。
使用GROUP BY并计算每个名称的行:
;WITH CTE as
(
SELECT NAME
FROM yourtable
GROUP BY NAME, INSERTED_TIME, UPDATE_TIME
)
SELECT NAME, count(*) - 1 COUNT
FROM CTE
GROUP BY NAME
结果:
NAME COUNT
mark 0
maya 1
tal 0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句