C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: SQLについての質問です


(過去ログ 71 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■41008 / inTopicNo.1)  SQLについての質問です
  
□投稿者/ あめ (1回)-(2009/09/09(Wed) 15:10:31)

分類:[(わからない)] 

板違いだと思いますが…教えて下さると助かります!

SQLで、
日付の前四ケタ(20090909だったら、200909)が一致するものを合計する、
というのを書きたいのですが、この前四ケタをどう条件指定?していいかわかりません。

よろしくお願いします。
引用返信 編集キー/
■41009 / inTopicNo.2)  Re[1]: SQLについての質問です
□投稿者/ Blue (19回)-(2009/09/09(Wed) 15:20:22)
日付はデータベースでどの型で保存しているのでしょうか?

文字列型?日付型?数値型?

それとなんていうデータベースを使っているのかも記述したほうがよいでしょう。
引用返信 編集キー/
■41010 / inTopicNo.3)  Re[2]: SQLについての質問です
□投稿者/ あめ (3回)-(2009/09/09(Wed) 15:27:39)
No41009 (Blue さん) に返信
> 日付はデータベースでどの型で保存しているのでしょうか?
>
> 文字列型?日付型?数値型?
>
> それとなんていうデータベースを使っているのかも記述したほうがよいでしょう。

失礼しました!

日付はCHAR型で、データベースはオブジェクトブラウザです。
引用返信 編集キー/
■41014 / inTopicNo.4)  Re[3]: SQLについての質問です
□投稿者/ はつね (1067回)-(2009/09/09(Wed) 16:21:30)
はつね さんの Web サイト
No41010 (あめ さん) に返信
> 日付はCHAR型で、データベースはオブジェクトブラウザです。

オブジェクトブラウザなんてDBは存在しないと思います。
接続ツールがオブジェクトブラウザで、実際はOracleかSQL Serverといったところでしょうか。

日付型ではなくCHAR型だとすれば、hogehoge LIKE '2009%'とかでいいでない?

引用返信 編集キー/
■41015 / inTopicNo.5)  Re[1]: SQLについての質問です
□投稿者/ .SHO (1031回)-(2009/09/09(Wed) 16:29:06)
> 日付の前四ケタ(20090909だったら、200909)が一致するものを合計する、

前六ケタ?

引用返信 編集キー/
■41017 / inTopicNo.6)  Re[2]: SQLについての質問です
□投稿者/ もりお (75回)-(2009/09/09(Wed) 16:45:31)
文字列を切り出して
グルーピングして
集計関数を使用してはいかがでしょうか。

SELECT
    SUBSTRING( columnDate, 1, 4 ) AS columnDate,
    COUNT( * ) AS columnCount
FROM table
GROUP BY SUBSTRING( columnDate, 1, 4 )

引用返信 編集キー/
■41274 / inTopicNo.7)  Re[3]: SQLについての質問です
□投稿者/ とも (4回)-(2009/09/16(Wed) 21:39:19)
No41017 (もりお さん) に返信
> 文字列を切り出して
> グルーピングして
> 集計関数を使用してはいかがでしょうか。
>
> SELECT
> SUBSTRING( columnDate, 1, 4 ) AS columnDate,
> COUNT( * ) AS columnCount
> FROM table
> GROUP BY SUBSTRING( columnDate, 1, 4 )

単純にライク検索で欲しい結果が取れるんじゃないかなぁ。
引用返信 編集キー/
■41278 / inTopicNo.8)  Re[4]: SQLについての質問です
□投稿者/ もりお (83回)-(2009/09/16(Wed) 22:42:35)
No41274 (とも さん) に返信
> 単純にライク検索で欲しい結果が取れるんじゃないかなぁ。
はつねさんが記述されているような具合になりますでしょうか。
お恥ずかしながら、理解が及ばなかったものでございまして
もしよろしければ、どのような SQL を記述するのか
お教えいただけるとありがたいです。
引用返信 編集キー/
■41280 / inTopicNo.9)  Re[5]: SQLについての質問です
□投稿者/ 魔界の仮面弁士 (1295回)-(2009/09/16(Wed) 23:17:47)
No41278 (もりお さん) に返信
>>単純にライク検索で欲しい結果が取れるんじゃないかなぁ。
> もしよろしければ、どのような SQL を記述するのか

LIKE を使った構文は、既に提示されていますよね。
引用返信 編集キー/
■41283 / inTopicNo.10)  Re[6]: SQLについての質問です
□投稿者/ もりお (84回)-(2009/09/17(Thu) 03:36:04)
2009/09/17(Thu) 04:00:52 編集(投稿者)

No41280 (魔界の仮面弁士 さん) に返信
> LIKE を使った構文は、既に提示されていますよね。

SELECT SUM( priceColumn ) AS total FROM table WHERE dateColumn LIKE '2009%'
こういうことでしょうか。

こうだと仮定しますと、ともさんの書かれている欲しい結果というのは
年を指定して、指定した年の合計ということになります。
しかしながら、質問者であるあめさんの文章では欲しい結果というのは
年を指定してとは明言されていないように思えたわけなのです。
だから、私は解答のレパートリーの1つとして No41017 を記述した次第なのです。

そういったわけで、私はあめさんの質問に対する解釈を間違えているのか、それとも
LIKE の便利な使い方が他にあるのかしらといった辺りを明確にしたかったのです。

ともさんの考える SQL の全体をお教えいただけるとはっきりするのかなと考えたわけです。
引用返信 編集キー/
■41286 / inTopicNo.11)  Re[7]: SQLについての質問です
□投稿者/ Jitta on the way (432回)-(2009/09/17(Thu) 07:02:34)
No41283 (もりお さん) に返信
> 2009/09/17(Thu) 04:00:52 編集(投稿者)
>
> ■No41280 (魔界の仮面弁士 さん) に返信
>>LIKE を使った構文は、既に提示されていますよね。
>
> SELECT SUM( priceColumn ) AS total FROM table WHERE dateColumn LIKE '2009%'
> こういうことでしょうか。

SELECT * FROM table WHERE dateColumn LIKE '2009%'

こうです。「和を求める」とは書かれていませんから。


>
> こうだと仮定しますと、ともさんの書かれている欲しい結果というのは
> 年を指定して、指定した年の合計ということになります。
> しかしながら、質問者であるあめさんの文章では欲しい結果というのは
> 年を指定してとは明言されていないように思えたわけなのです。

「前4桁が一致」したものが取り出せますよ?
文字列なので、「前4桁」が年とは限りません。そこはある意味「設計ミス」だと思います。
引用返信 編集キー/
■41303 / inTopicNo.12)  Re[8]: SQLについての質問です
□投稿者/ もりお (85回)-(2009/09/17(Thu) 13:20:48)
No41286 (Jitta on the way さん) に返信
> SELECT * FROM table WHERE dateColumn LIKE '2009%'
>
> こうです。「和を求める」とは書かれていませんから。

合計 == 選択 ということですか。
なるほど、激しく誤解していました。


> 「前4桁が一致」したものが取り出せますよ?

一致というのが入力値との一致なのか、データベース上の値の一致なのか
曖昧に思えたので、解答の範囲として No41017 もありかと思ったのですが、
上記の SQL を勘案すると在り得ないですね。
これで明確になりました。ありがとうございました。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -