我的问题很简单,我们尝试的所有查询都出错了。我是新手用户,我还在学习SQL语言,任何帮助都将非常感激。
我尝试将表格更新到费率列与Mat ID
匹配的位置,并使用该分组中的第一个值进行更新。
+------+--------+
| Rate | Mat ID |
+------+--------+
| 1 | 81 |
| 2 | 82 |
| 2 | 83 |
| 3 | 85 |
| 2 | 86 |
| 2 | 87 |
| 3 | 88 |
+------+--------+
预期结果:
+------+--------+
| Rate | Mat ID |
+------+--------+
| 1 | 81 |
| 2 | 82 |
| 2 | 82 |
| 3 | 85 |
| 2 | 82 |
| 2 | 82 |
| 3 | 85 |
+------+--------+
答案 0 :(得分:1)
假设如下:
85
而不是88
。以下UPDATE
声明符合您的要求:
;
WITH CTE_MinMatID
AS (
SELECT Rate,
MIN(MatID) MinMatID
FROM @table
GROUP BY Rate
)
UPDATE t
SET t.MatID = cte.MinMatID
FROM @table AS t
INNER JOIN CTE_MinMatID cte ON cte.Rate = t.Rate;