我正在使用SQL 2012,我有以下表:
Id Ticket LastChange
1 369151 2010-03-18
2 369151 2010-03-18
11 374173 2010-11-11
12 374173 2010-11-11
13 374173 2010-11-11
54 374173 2014-01-13
63 374503 2010-11-18
64 393920 2010-10-15
65 393920 2010-10-15
69 393920 2010-10-19
70 393920 2012-03-29
71 404145 2011-03-04
77 404145 2011-03-04
78 404145 2011-03-10
79 404145 2011-03-10
80 404145 2011-03-10
81 404145 2011-03-28
82 404145 2011-03-28
83 404145 2011-03-28
84 404146 2011-03-04 我想删除所有的记录,其票务组在过去的x个月没有任何变化。例如,如果票证374173在过去6个月中没有LastChange,那么使用票证374173删除表中的所有记录。
我可以用一个可笑的组查询、连接、子查询、子查询、删除来完成这个任务,但这似乎太复杂了。我认为分区处理可能是一种更简单的方法,但对TSQL来说仍然是个新手。任何帮助都是非常感谢的。谢谢。
发布于 2014-03-18 20:32:15
您可以使用子查询来获取要删除的票。修改“最后6个月”部分,以满足您的确切需要。
DELETE FROM table1
WHERE Ticket IN
(SELECT Ticket FROM table1
GROUP BY Ticket
HAVING MAX(LastChange) < DATEADD(month, -6, GETDATE()))https://stackoverflow.com/questions/22490303
复制相似问题