我尽我所能地表达这个问题,但我知道它可能不是很清楚。
我有下表
| 原始控制器标识|控制器标识|
| - ------| - ------|
| 九零六|九零六|
| 九零五|九零五|
| 九零四|九零四|
| 九零三|九零三|
| 九零二|九零二|
| 九零一|九零一|
| 九百|九百|
| 八九八|八九九|
| 八九八|八九八|
| 八九七|八九七|
| 八九六|八九六|
| 八九五|八九五|
| 八九四|八九四|
| 八九三|八九三|
| 八九二|八九二|
我正在尝试运行一个查询,它将检查original_ctr_id中是否有重复的数字,如果有,则将该数字替换为ctr_id中对应的最高数字。
在上面的示例中,898出现了两次,ctr_id中的最大对应数字是899,因此该表看起来应该相同,但是898根本没有出现,并且将在1行中替换为899。
这只是表的一小部分摘录,作为我尝试做的事情的说明。我尝试过Partition by和Group by,但我不需要ctr_id来聚合,因此据我所知,这不会起作用。
下面是最接近我需要的查询,如果我可以添加一些逻辑来选择ctr_id而不是original_ctr_id(当它较大时),这应该会给出所需的结果。
SELECT
original_ctr_id
FROM [MIS].[dbo].[Test]
GROUP BY
original_ctr_id
HAVING
Count(original_ctr_id) >= 1
ORDER BY original_ctr_id
有人知道这是在正确的轨道上还是有一个优雅的解决方案吗?
1条答案
按热度按时间unftdfkk1#
您可能需要一个可更新的CTE,它可以在SQL Server中使用,但在使用T-SQL的其他产品(如SyBase)中可能无法使用: