如何在SQL Server数据库中删除重复的行

时间:2019-06-14 05:38:18

标签: sql-server

enter image description here

我有这张考勤系统表,其中包含dateinout,checkin,checkout等列。用户上班时打卡,外出时打卡。系统两次从指纹扫描仪中检索数据。我想删除打孔时间在上午7点至上午11点之间的同一日期中有多个计数的行,也要删除在上午11点至下午6点之间具有相同日期结帐的行。

error -> {
     CapthaShower.setImageDrawable(null);
     Glide.with(getContext()).load(url_cap).diskCacheStrategy(DiskCacheStrategy.NONE).skipMemoryCache(true).into(CapthaShower);
     showToast("error");
     captcha = null;
     captchaEdit.setText("");
}

2 个答案:

答案 0 :(得分:0)

您可以逐步进行。 首先,找到时间范围内的插入计数:

SELECT COUNT(Logid), userid
FROM Checkinout
WHERE Intime BETWEEN '07:00:00.0000000' AND '11:00:00.0000000'
GROUP BY Logid
HAVING COUNT(Logid) > 1

在获得列表之后,您可以按属性分散您的需求

答案 1 :(得分:0)

您可以使用cte根据您的分组条件从att表中删除重复项。

;WITH CTE AS(
SELECT
row_number() over (partition by  userid,dateinout, Intime, Outtime order by date) AS ROWNUMBER,
        userid,
        dateinout,  
        Intime,
        Outtime
    FROM 
        att
    WHERE 
        Intime BETWEEN '07:00:00.0000000' AND '11:00:00.0000000'
        AND userid = 37
 )

 DELETE FROM CTE WHERE ROWNUMBER>1