SELECT [a],[b],[c],COUNT(*) AS Hits
FROM [dbo].[ta] join [dbo].[tb] on [tb].[id] = [ta].[id]
where GROUP BY [a],[b],[c]
我想选择列c,但不是按照cluase分组? 因为专栏" c"如分组
那样,返回一个不太过分的记录我当前的查询是
SELECT top 20 [headshot],
[athleteId],
[athleteName],
COUNT() AS Hits
FROM [dbo].[tblRep_Usecase2]
join [dbo].[tblRep_Login] on [tblRep_Login].[ID] = [tblRep_Usecase2].[ID]
where athleteName != 'NULL'
and headshot != 'NULL'
and headshot != ''
and convert(date,[tblRep_Usecase2].[insertDate]) >='11/9/2015'
and convert(date,[tblRep_Usecase2].[insertDate]) <='11/9/2015'
and [tblRep_Usecase2].[appsportid]='41'
GROUP BY [headshot],[athleteId],[athleteName]
HAVING COUNT()>1 order by Hits DESC
答案 0 :(得分:0)
简短回答:你不能。
更长的答案:您必须应用公式来定义&#34; c&#34;数据受到歧视。
例如,如果你有一个关于孩子的表,比如
|a |b |c |
|-------|-------|---------|
|Bob |Sarah |Amanda |
|Bob |Sarah |Steve |
|Bob |Amanda |Sarah Jr.|
你问他每对夫妇的孩子数量(所以Bob + Sarah = 2,Bob + Amanda = 1),但是你也问他一个孩子的名字。由于他不能告诉你你想要哪个孩子,他不能把你的结果告诉你。
在这种情况下,也许Bob,Sarah,Amada,Steve和Sarah Jr在他们年龄的其他地方的桌子上。因此,如果您只想要年龄最大的孩子,则需要返回a,b,&#34;子查询&#34;,&#34; count&#34;。根据具体情况,MAX / MIN等简单的聚合函数也可以使用。