什么select语句将返回下表中的更新表,其中已过滤掉所有三列上重复的行。
ID Date Username
2368 2012-01-31 00:00:00 asmith
2368 2012-08-23 00:00:00 asmith
3151 2012-01-05 00:00:00 asmith
3151 2012-01-11 00:00:00 asmith
3151 2012-01-11 00:00:00 asmith
3171 2012-02-01 00:00:00 asmith
3412 2012-03-27 00:00:00 asmith
3420 2012-03-19 00:00:00 asmith
3423 2012-07-12 00:00:00 asmith
3431 2012-04-04 00:00:00 asmith
3460 2012-03-10 00:00:00 asmith
3519 2013-12-17 00:00:00 asmith
3539 2012-05-21 00:00:00 asmith
3541 2012-07-03 00:00:00 asmith
3572 2012-03-22 00:00:00 asmith
3572 2012-03-24 00:00:00 asmith
3572 2012-03-25 00:00:00 asmith
3572 2012-03-25 00:00:00 asmith
因此,在删除了ID值3151和3572的重复项后,结果表将如下所示。
ID Date Username
2368 2012-01-31 00:00:00 asmith
2368 2012-08-23 00:00:00 asmith
3151 2012-01-05 00:00:00 asmith
3171 2012-02-01 00:00:00 asmith
3412 2012-03-27 00:00:00 asmith
3420 2012-03-19 00:00:00 asmith
3423 2012-07-12 00:00:00 asmith
3431 2012-04-04 00:00:00 asmith
3460 2012-03-10 00:00:00 asmith
3519 2013-12-17 00:00:00 asmith
3539 2012-05-21 00:00:00 asmith
3541 2012-07-03 00:00:00 asmith
3572 2012-03-22 00:00:00 asmith
3572 2012-03-24 00:00:00 asmith
答案 0 :(得分:3)
USE Row_NUMBER
;WITH CTE AS (
select id, date, username,ROW_NUMBER() OVER (PARTITION BY id,Date ORDER BY ID) RN
from TABLE
)
SELECT * FROM CTE WHERE RN=1
执行此操作的替代方法
select id, date, username
from TABLE
GROUP BY id, date, username
HAVING COUNT(*) = 1
答案 1 :(得分:0)
使用以下脚本。
;with cte_1
as
(SELECT COUNT(CareID)OVER(partition by CareID, TreatDate, Username order by CareID) CNT,*
FROM tmpHANAPATH_Treatments WHERE Username = @Username)
SELECT * FROM cte_1
WHERE CNT=1