【发布时间】:2025-12-04 07:05:01
【问题描述】:
我有如下表。我想获取重复的记录。这里是条件
状态 = 1 的订阅者,即活跃,并且通过比较 start_date 和 end_date 在当前年份拥有多条记录。我在 DB 中有大约 5000 多条记录。这里展示几个示例。
id pkg_id start_date end_date status subscriber_id
2857206 9128 8/31/2014 8/31/2015 2 3031103
2857207 9128 12/22/2015 12/22/2016 1 3031103
3066285 10308 8/5/2016 8/4/2018 1 3031103
2857206 9128 8/31/2013 8/31/2015 2 3031104
2857207 9128 10/20/2015 11/22/2016 1 3031104
3066285 10308 7/5/2016 7/4/2018 1 3031104
3066285 10308 8/5/2016 8/4/2018 2 3031105
我尝试了下面的查询,但不适用于所有记录:
SELECT *
FROM dbo.consumer_subsc
WHERE status = 1
AND YEAR(GETDATE()) >= YEAR(start_date)
AND YEAR(GETDATE()) <= YEAR(end_date)
AND subscriber_id IN (
SELECT T.subscriber_id
FROM ( SELECT subscriber_id ,
COUNT(subscriber_id) AS cnt
FROM dbo.consumer_subsc
WHERE status = 1
GROUP BY subscriber_id
HAVING COUNT(subscriber_id) > 1
) T )
ORDER BY subscriber_id DESC
问题是我无法找到一种方法,可以将每一行与上述日期条件进行比较。我应该得到如下重复的结果:
id pkg_id start_date end_date status subscriber_id
2857207 9128 12/22/2015 12/22/2016 1 3031103
3066285 10308 8/5/2016 8/4/2018 1 3031103
2857207 9128 10/20/2015 11/22/2016 1 3031104
3066285 10308 7/5/2016 7/4/2018 1 3031104
【问题讨论】:
标签: sql sql-server sql-server-2008 sql-server-2005