0

Microsoft SQL サーバーを使用しています。結果をフルタイムでソートしようとしています。

私の生データは次のようになります。

TimeStamp                           TotalOffered
2012-04-16 08:00:00                 18
2012-04-16 08:30:00                 34
2012-04-16 09:00:00                 30
2012-04-16 09:30:00                 68

たとえば、08:00:00 のデータの合計は 52、09:00:00 のデータの合計は 98 など、時間単位で並べ替えています。日ごとに分類しています。

私が持っているコードは次のとおりです。

select datepart(hour,[TimeStamp]), SUM([TotalOffered])
from [my table]
group by 
datepart(hour,[sus_CallPerformance_TimeStamp]), 
dateadd(d, 0, datediff(d, 0, [sus_CallPerformance_TimeStamp]))

時間だけでなく完全な TimeStamp を表示するデータを取得しようとしています。

現在、結果は次のように表示されます。

8   52
9   98

結果を次のように表示したいと思います。

2012-04-16 08:00:00   52
2012-04-16 09:00:00   98

ありがとうございました

4

3 に答える 3

2
SELECT  DATEADD(HOUR, DATEPART(HOUR, TimeStamp), DATEDIFF(DAY, 0, TimeStamp)) [TimeStamp],
        SUM(TotalOffered) [TotalOffered]
FROM    [My Table]
GROUP BY DATEADD(HOUR, DATEPART(HOUR, TimeStamp), DATEDIFF(DAY, 0, TimeStamp))
ORDER BY [TimeStamp]
于 2012-04-18T12:57:34.257 に答える
-1

これを試して:

declare @t table (ts datetime, od int)
insert into @t (ts, od) values ('2012-04-16 08:00:00', 18)
insert into @t (ts, od) values ('2012-04-16 08:30:00', 34)
insert into @t (ts, od) values ('2012-04-16 09:00:00', 30)
insert into @t (ts, od) values ('2012-04-16 09:30:00', 68)

select * from @t


select 
    dateadd(hour, datepart(hour, ts), cast(floor(cast(ts as real)) as datetime)) as solution,
    sum(od)
    from @t
    group by dateadd(hour, datepart(hour, ts), cast(floor(cast(ts as real)) as datetime))
    order by dateadd(hour, datepart(hour, ts), cast(floor(cast(ts as real)) as datetime))
于 2012-04-18T13:06:55.717 に答える
-1

DateTime フィールドは浮動小数点値にキャストできます。整数は日付を表し、分数は時刻を表します。日付に 24 を掛けると、次のように整数が時間を表します。

SELECT CAST(FLOOR(CAST(TimeStamp AS FLOAT) * 24)/24.0 AS DateTime) AS Hr, SUM(TotalOffered) AS Total
FROM [my table]
GROUP BY FLOOR(CAST(TimeStamp AS FLOAT) * 24)
ORDER BY FLOOR(CAST(TimeStamp AS FLOAT) * 24)
于 2012-04-18T13:12:09.887 に答える