アプリ版:「スタンプのみでお礼する」機能のリリースについて

SQLServer2005で以下のテーブルがあります。
[Day] [Time]
  1  1:30
  1  2:00
  2  4:45
  3  2:30
  3  1:45
Dayフィールド、Timeフィールドは共にvarchar2です。
(Timeには"1:30"の文字列が入っています)

このテーブルを読み込むとき、各日ごとの合計を計算して出力するSQL文がわかりません。
■■ 出力イメージ ■■
Day Time
  1 3:30
  2 4:45
  3 4:15

DateAdd関数やMAX関数等を使って考えましたが実現できませんでした。
こういう処理をSQL文でおこなうことは可能でしょうか?
もし実現可能な場合、方法やだいたいのやり方でも結構ですのでご教示いただけませんでしょうか?

TimeフィールドがDatetime型から可能でしょうか?
それとも、プロシージャや読み込んでから別途計算しなおさないと無理でしょうか?

よろしくお願いします。

A 回答 (1件)

>Dayフィールド、Timeフィールドは共にvarchar2です。



SQL Server 2005を使用しているのですよね?
varchar2は、「Oracle独自のデータ型」と認識していますが?

時刻をvarcharで管理するメリットって、思い浮かばないのですが?

SQL例を提示しておきますので、何をやっているかは自分なりに調べてみてください。

select
[day],
sum(datepart(hh,[time]))
+floor(sum(datepart(mi,[time]))/60) as hh,
sum(datepart(mi,[time]))%60 as mm
from tbl1
group by [day]
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

>varchar2は、「Oracle独自のデータ型」と認識していますが?
ご指摘とおりです。私の記述勘違いです。varcharでした。

>時刻をvarcharで管理するメリットって、思い浮かばないのですが?
ある会社のシステム増強で、ユーザー先が昔のシステム(デーダベース)をそのまま残したいと要望されたためです。

SQL文のご教示ありがとうございました。
一応中身は理解したつもりですが、明日会社で再度検証します。
ありがとうございました。

お礼日時:2007/10/29 23:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!