2013-10-10 58 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以反轉