transaction
次のようなテーブルがあります。
transactID Paydate DelDate vtid
24 2013-05-08 16:53:03.000 2013-05-08 17:00:28.000 8
25 2013-05-08 16:34:38.000 2013-05-08 17:00:14.000 7
日付の差の合計を取得するために、次のようなクエリを作成しました。
select
v.Vtype,
SUM(DATEDIFF(MI, t.Paydate, t.DelDate)) as sum_min,
AVG(CONVERT(NUMERIC(18, 2), DATEDIFF(MI, t.Paydate, t.DelDate))) as avg_min
from
Transaction_tbl t
left join
VType_tbl v on t.vtid = v.vtid
where
t.transactID in (24, 25)
group by
v.Vtype
数分で適切な出力が得られます。
Vtype sum_min avg_min
----- ----------- ---------------------------------------
Normal 26 26.000000
VIP 7 7.000000
数分で列を取得する代わりに、sum_min
出力を取得したいと考えていますhh:mm:ss
。したがって、期待される出力は次のようになります。
Vtype sum_min avg_min
----- ----------- ---------------------------------------
Normal 00:26:00 26.000000
VIP 00:7:00 7.000000
これを取得するために、次のようなクエリを書きました。
SELECT
convert(varchar(10), sum(DATEDIFF(hour, t.Paydate, t.DelDate))) + ':' +
convert(varchar(10), sum(DATEDIFF(minute, t.Paydate, t.DelDate) % 60)) + ':' +
convert(varchar(10), sum(DATEDIFF(SECOND, t.Paydate, t.DelDate) % 60)) AS 'HH:MM:SS'
FROM
Transaction_tbl t
WHERE
t.transactID in (24, 25)
group by
vtid
しかし、私の出力では、1時間が余分に来ています。このクエリを実行すると、次のような出力が得られます。
HH:MM:SS
--------------------------------
1:26:36
1:7:25
では、適切な結果を得るためにクエリを書き直すにはどうすればよいでしょうか?