電子書籍の厳選無料作品が豊富!

テーブル
T_itemにはitem(TEXT),lot(TEXT),category(int)があり
categoryには仕入れ時に可能なロット指定を数値で格納しています。
1は大(ミニマム1000以上のもの)
2は小(ミニマム1000より少ないのもの)

必ずitem, lotをキーにcategoryが1,2,1と2かという結果が欲しいです。

現在は
select distinct item || lot as itemlot, category from T_item
とすると
panasonic-***0001A, 1
panasonic-***0001A, 2
panasonic-***0001B, 1
panasonic-***0001C, 2
panasonic-***0001D, 2
sony-***0001A, 1
sanyo-***0001A, 2
victor-***0001A, 1
victor-***0001A, 2
これを
panasonic-***0001A, 3
panasonic-***0001B, 1
panasonic-***0001C, 2
panasonic-***0001D, 2
sony-***0001A, 1
sanyo-***0001A, 2
victor-***0001A, 3
のように結果を返したいです。

select文だけでcategoryが1,2両方持っているものを3として表示することはできますか?
または2回のselect文で1回目は1,2どちらかを持っている
ものだけ、2回目は1,2両方持っているものだけという具合に結果を返すことはできるのでしょうか?

A 回答 (2件)

>taka_tetsuさんの仰られるとおりの方法で可能でした、


>categoryに文字列が追加され1,2も文字列として扱いたい場合はどのようにしたらよいのでしょうか?

基本的に一緒です。
categoryに格納される文字列の形式が不明なのでSQLそのものは書けませんが、case命令でcategoryを分類して1,2を求めれば同じことです。
    • good
    • 0
この回答へのお礼

なるほど。caseで数値に変換してから集計するということですか。 大変参考になりました。

お礼日時:2005/03/15 07:57

>select文だけでcategoryが1,2両方持っているものを3として表示することはできますか?



3なら1+2なので、

select item || lot as itemlot, sum(category) from T_item group by (item || lot)

これでOKかと。


>または2回のselect文で1回目は1,2どちらかを持っている

select item || lot as itemlot sum(category) from T_item group by (item || lot) having sum(category)<3


>2回目は1,2両方持っているものだけという具合に結果を返すことはできるのでしょうか?

select item || lot as itemlot sum(category) from T_item group by (item || lot) having sum(category)=3

この回答への補足

いつも本当にありがとうございます。
事情がありましてお礼が大変遅くなりまして申し訳ありません。

taka_tetsuさんの仰られるとおりの方法で可能でした、categoryに文字列が追加され1,2も文字列として扱いたい場合はどのようにしたらよいのでしょうか?

補足日時:2005/03/14 13:05
    • good
    • 0

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

関連するカテゴリからQ&Aを探す