MS SQL将表连接到自身

时间:2016-05-23 16:36:24

标签: sql

Col1 | Col2 |
10     NULL
20     NULL
30     NULL
20     NULL

我有一个表,我想用以下条件更新Col2的每一行:一些定标器号X/(Count of the value from Col1)。那就是X = 8,那么我应该拥有以下值8/1 , 8/2, 8/1, 8,2 and so on..

我正在做以下事情:

SELECT COUNT(*)
FROM (
    SELECT [Table].Col1
    FROM [Table]
    INNER JOIN [Table] T ON [Table].Id = T.Id
    WHERE [Table].Col1 = T.Col1
    )

你能指出我的错误吗?

1 个答案:

答案 0 :(得分:2)

你需要这样的东西:

SELECT t1.Col1, 8 / t2.cnt
FROM [Table] t1 
INNER JOIN (
   SELECT Col1, COUNT(*) AS cnt
   From [Table]
   GROUP BY Col1
) t2 ON t1.Col1 = t2.Col2

上述查询使用包含每Col1个值的派生表。使用此计数,我们可以对原始表的每一行进行所需的数学运算。