假设我有一个这样的表
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()
,那么我必须按所有列分组,这是我不想要的。
我希望我能说清楚
谢谢
答案 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