2014-01-29 100 views
3

我有下面的表:數據TSQL查詢幫助結構導致

timestamp | value | desc 

例如:

2014-01-27 10:00:00.000 | 100 | 101 
2014-01-27 10:00:00.000 | 105 | 101 
2014-01-27 11:00:00.000 | 160 | 101 
2014-01-27 12:00:00.000 | 200 | 101 
... 
... 
2014-01-28 10:00:00.000 | 226 | 101 
2014-01-28 10:00:00.000 | 325 | 101 
2014-01-28 11:00:00.000 | 145 | 101 

我想獲得的是按小時部分的分組,但而不合並週期間隔。 使得結果將是這樣的(在選擇我將通過一個日期間隔和像DESC =「101」的描述的條件:

結構:

hour | count 

數據:

10 | 2 (referring to the 20140127) 
11 | 1 (referring to the 20140127) 
12 | 1 (referring to the 20140127) 
... 
... 
10 | 2 (referring to the 20140128) 
11 | 1 (referring to the 20140128) 

我想過使用遊標,但我想知道是否有可能實現這一結果沒有它。

我使用小號QL服務器2012 SP1

感謝您的關注。

再見, F.

+0

在Oracle中,我會做'SELECT TO_CHAR(時間戳, 'DD-MON-YYYY HH24'),COUNT(*)FROM myTable的GROUP BY to_char(timestamp,'dd-mon-yyyy hh24')'。只需找到'to_char(timestamp,'dd-mon-yyyy hh24')'的SQL Server等價物。 – Rachcha

+0

也或者在甲骨文,我總是用'選擇提取物(從時間戳小時),COUNT(*)FROM myTable的GROUP BY提取物(從時間戳小時)' – Charlesliam

+0

在SQL Server,你可以使用GROUP BY DATEPART(HH,時間戳) –

回答

1

試試這個: -

SELECT Count(*)     AS [Count], 
     Datepart(hour, timestamp) AS [Hour] 
FROM yourtable 
GROUP BY CONVERT(DATE, timestamp), 
      Datepart(hour, timestamp) 
ORDER BY CONVERT(DATE, timestamp) 
+0

所以這就像一個魅力兩個答案,缺少的部分是整個日期的團體保留期限。 非常感謝你,我會給出答案的第一張海報,但他們兩個是有效的。 – user3247900

1

你可以使用這個。這應該工作

SELECT DATEPART(hh,timestamp), COUNT(*) 
FROM tablename 
GROUP BY 
DATEPART(hh,timestamp), 
DATETIMEFROMPARTS (YEAR(timestamp),MONTH(timestamp),DAY(timestamp),0,0,0,0,0), 
desc HAVING desc ='yourvalue' 
+0

計數合併所以這就像一個魅力這兩個答案,缺失的部分是整個日期的小組保留期限。 非常感謝,我會給第一張海報的答案,但他們都是有效的。 – user3247900

+0

可以給予好評我的答案:) – DhruvJoshi

+0

我需要15的聲譽:(當我到了它,我會做,對不起,我是新來這個社區 – user3247900