0

假设我有一张这样的桌子

Id  TagNo  F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 CoreNo
 1   1000   A  B  C  D  E  F  R  E W   W   D    1
 2   1000   A  B  C  D  E  F  R  E W   W   D    2
 3   1000   A  B  C  D  E  F  R  E W   W   D    3
 4   1001   A  B  C  D  E  F  R  E W   W   D    1
 5   1001   A  B  C  D  E  F  R  E W   W   D    2

我希望有

  TagNo  F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 CoreNo TotalCores
   1000   A  B  C  D  E  F  R  E W   W   D    1       3
   1000   A  B  C  D  E  F  R  E W   W   D    2
   1000   A  B  C  D  E  F  R  E W   W   D    3
   1001   A  B  C  D  E  F  R  E W   W   D    1       2
   1001   A  B  C  D  E  F  R  E W   W   D    2

F1...F11 列的值(实际上不止于此)并不重要。

我知道Count()。但是,如果我想使用,Count()那么我必须按我不想要的所有列进行分组。

我希望我能说清楚

谢谢

4

3 回答 3

5

你可以使用这个:

SELECT
    TagNo, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, CoreNo,
    TotalCores = COUNT(*) OVER(PARTITION BY TagNo)
FROM 
    dbo.YourTable
于 2013-11-04T05:40:50.243 回答
0

也许在子选择中使用 group by 进行子选择。如果它是一张大桌子,这不是一个好主意。

于 2013-11-04T05:40:19.843 回答
-1

没有 GROUP BY 和 COUNT :-)

select *, 
  (select max(coreno) from table t2 where t1.tagno=t2.tagno and t1.coreno=1) TotalCores 
from table t1
于 2013-11-04T19:37:56.750 回答