获取没有GROUP BY的记录计数

时间:2013-11-04 05:37:36

标签: sql-server tsql

假设我有一个这样的表

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(),那么我必须按所有列分组,这是我不想要的。

我希望我能说清楚

谢谢

3 个答案:

答案 0 :(得分:5)

你可以用这个:

SELECT
    TagNo, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, CoreNo,
    TotalCores = COUNT(*) OVER(PARTITION BY TagNo)
FROM 
    dbo.YourTable

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

没有GROUP BY和COUNT: - )

select *, 
  (select max(coreno) from table t2 where t1.tagno=t2.tagno and t1.coreno=1) TotalCores 
from table t1