tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルSQL作成(グループ化)について
記事No5461
投稿日: 2007/05/10(Thu) 11:54
投稿者みんこ
スレ違いだったらすみません。
VB2005で開発しています。
SQL作成でわからないところがあります。(初歩的だったらすみません)

テーブル名:TESTテーブル
フィールド名:NO,数量,コード

があるとします。
ここで、NOごとに数量の合計を集計するのですが、ただし条件があって
コードが1のデータのみ対象とします。
このとき

select NO,数量 from TESTテーブル group by NO having コード = '1'
としたいところですが、エラーになってしまうようです。

select NO,数量,コード from TESTテーブル group by NO,コード having コード = '1'
だとうまくいくようですが、コードでグループ化はしたくないとき(条件が増えたときなどあ9
に対応する方法はありますか?

お願いします。

[ツリー表示へ]
タイトルRe: SQL作成(グループ化)について
記事No5462
投稿日: 2007/05/10(Thu) 12:48
投稿者魔界の仮面弁士
> スレ違いだったらすみません。
新規スレッドに、「スレ違い」は無いかと。
それを言うなら、「板違い」かな? VBと無関係ですし。

> フィールド名:NO,数量,コード
Jet データベースでは、NO は予約語なのでご注意あれ。(Yes/No型の値で、Falseと同義)

> select NO,数量,コード from TESTテーブル group by NO,コード having コード = '1'
> だとうまくいくようですが、
本当にそうですか? 何というデータベースをお使いか分かりませんが、
数量がグループ化されていませんので、エラーになると思うのですが……。
それにこの場合、HAVING ではなく WHERE が必要なのでは。

[ツリー表示へ]
タイトルRe^2: SQL作成(グループ化)について
記事No5463
投稿日: 2007/05/10(Thu) 13:02
投稿者みんこ
魔界の仮面弁士さん

ありがとうございます。
すみません!SQL複写ミスです。

select NO,Sum(数量),コード from TESTテーブル group by NO,コード having コード = '1'
の間違いです。
いかがでしょうか・・?

[ツリー表示へ]
タイトルRe^3: SQL作成(グループ化)について
記事No5465
投稿日: 2007/05/10(Thu) 14:32
投稿者魔界の仮面弁士
いや、だから板違いなんですってば。(汗
まぁ乗りかかった船なので、花ちゃんさんが問題視しない限りは、
このまま話を続けますけれども。


で。「NOごとの数量合計(コードが1のみ対象)」という仕様なので、
先に書いたように、HAVING よりも WHERE を使うべきですよね、と。

[ツリー表示へ]