2013-11-04 76 views
0

假设我有这样的获取无GROUP记录的计数BY

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

有count(),我必须按所有字段进行分组吗? – nnmmss

+0

不可以。您必须按您想要按计算方式划分的字段进行分组,例如, CoreNo –

回答

4

您可以使用此:

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

哈哈。聪明。愚蠢的问题,但巧妙的解决方案。 –

0

通过在子选择也许做一个子选择与组。不是一个好主意,但如果它是一张大桌子。

-1

没有GROUP BY和COUNT :-)

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