• ベストアンサー

SQL文について教えてください

下記のようなテーブルがあったとして、日にちごとの金額合計を取得したいのですが、どうすればよいのかわかりません。初歩的なことかもしれませんか、よろしくお願いします。 単純に、日付でGROUP BYしてもうまくいかないようで^^;; ----------------------- 日付      │金額 ----------------------- 2005-10-18 20:54│100 2005-10-18 21:30│200 2005-10-18 24:13│150 2005-10-19 10:00│100 2005-10-19 12:00│500 2005-10-19 20:00│200 結果は、 2005-10-18 450 2005-10-19 800 と取得したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • 7marine
  • ベストアンサー率36% (59/160)
回答No.2

create table #T( d datetime, i int ) go insert #T values(N'2005-10-18 20:54',100) insert #T values(N'2005-10-18 21:30',200) insert #T values(N'2005-10-18 00:13',150) insert #T values(N'2005-10-19 10:00',100) insert #T values(N'2005-10-19 12:00',500) insert #T values(N'2005-10-19 20:00',200) select convert(nvarchar(10),d,111) as d2, sum(i) as i2 from #T group by convert(nvarchar(10),d,111) --もっといい方法があるかも? --何とかそれらしくなりました

w0a15455
質問者

お礼

bin-chanさん、7marineさんありがとうございました。 7marineさんの方法でうまくいきました。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

集計キー部をDate型から文字列に変換してしまいます。 select format(日付, 'yyyy-mm-dd'), sum(金額) from テーブル group by format(日付, 'yyyy-mm-dd') ; でどうでしょう? テストしてないので自信なし。 なお、Oracle、DB2なら「format」が「to_char」です。

関連するQ&A