2013-10-10 57 views
0

返回字符串结果和排序到目前为止,我有这个疑问查询,通过一个子组,由集料对集团

select count(*) as howMany,sum(Duration) as totalTime 
from [Tmp].[dbo].[tmp2] 
group by SUBSTRING(TextData,1,25) 

工作正常,返回两列:的howmany和TOTALTIME。我希望它也返回一个包含SUBSTRING(TextData,1,25)结果的列,这对每个组都是一样的。不过,我不知道如何修改查询来完成此操作。

我也想通过TOTALTIME订购的结果,但下面的尝试失败编译

select * 
from (select count(*) as howMany,sum(Duration) as totalTime 
     from [Tmp].[dbo].[tmp2] 
     group by SUBSTRING(TextData,1,25)) 
order by totalTime; 
+0

我是否错过了有关您的需求的内容?只需将'SUBSTRING(TextData,1,25)'直接与其他两个聚合函数一起添加到'SELECT'列表中。 –

+1

您的第二个查询可能无法编译,因为您需要在FROM子句中的子查询中添加一个表别名。 (告诉我们这个错误会让这个更容易) – RBarryYoung

回答

2
select SUBSTRING(TextData,1,25), 
    count(*) as howMany, 
    sum(Duration) as totalTime 
from [Tmp].[dbo].[tmp2] 
group by SUBSTRING(TextData,1,25) 
order by 3 --3rd column 

应该做的伎俩。

1
select SUBSTRING(TextData,1,25) as textdata, count(*) as howMany,sum(Duration) as totalTime 
from [Tmp].[dbo].[tmp2] 
group by SUBSTRING(TextData,1,25) 
order by sum(duration) 

我相信你可以将子串位添加到select语句并按顺序添加总和。它默认为升序,在声明的末尾加上desc以反转