2016-05-23 52 views
0
Col1 | Col2 | 
10  NULL 
20  NULL 
30  NULL 
20  NULL 

我有一个表格,我想用下列条件更新Col2的每一行:一些定标器号码X/(Count of the value from Col1)。也就是说,如果X = 8那么我应该有以下的follwoing值8/1 , 8/2, 8/1, 8,2 and so on..MS SQL自己加入表格

我做:

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

你能指出我的错误吗?

回答

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值计数派生表。使用这个计数,我们可以完成原始表格每行所需的数学运算。

+0

非常感谢!现在工作:) –