• ベストアンサー

同じデータが入ったフィールドをひとつに。

いつもお世話になって、大変助かっております。初心者なのですが、お相手ください。 sql文を作成していて、以下のようにデータを編集したいのですが、 左の3つのフィールドを一つに統合することは可能でしょうか?可能であればどのように書けばよろしいですか? field1|data1|field2|data2|field3|data3 -------------------------------------------    100|  あああ|   100|  いいい|   100| ううう    101|  かかか|  null| null|  null| null   null| null|   102|  さささ|  null| null   null| null|  null| null|   103| たたた           ↓↓↓↓ field4|data1|data2|data3 ----------------------------    100|  あああ|  いいい| ううう    101|  かかか| null| null    102| null|  さささ| null    103| null| null| たたた 一日中奮闘してみましたが、解決に至りませんでした。 よろしくお願いいたします。

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

  • ベストアンサー
  • noah7150
  • ベストアンサー率46% (116/251)
回答No.1

質問の内容の理解に苦しみますが・・・ 1レコード内に101と102が混在するって事は無いのですよね つまり、field1、field2、field3のNull以外を表示すればよいって事ですかね であれば単純に SELECT NVL(field1,NVL(field2,field3)) field4,data1,data2,data3 FROM ・・・ で問題あるのですかね?

somehow123
質問者

お礼

全て出来ました。 ありがとうございました。

somehow123
質問者

補足

ありがとうございます! 思っていた通りの事ができました。 さらにこのSQLでだした結果data1, data2, data3 の数をcountで集計したいと思ってるのですが、うまくいきません・・・。 SELECT field4, data1, data2, data3, COUNT(field4) FROM ( SELECT NVL(field1,NVL(field2,field3)) field4,data1,data2,data3 FROM ・・・ ) GROUP BY field4, data1, data2, data3 としてみたのですが、結果は全て1と出ます。やりたいこととしては件数を合計して出したいのですが。。 どうすればよろしいでしょうか。

その他の回答 (1)

  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.2

> さらにこのSQLでだした結果data1, data2, data3 の数をcountで集計したいと思ってるのですが、うまくいきません・・・。 これって何がやりたいのか日本語で仕様を説明してください。 各レコードでdata1, data2, data3にデータが入っている数を出すという意味ですか? 100| あああ | いいい | ううう --> 3件 101| かかか | null | null --> 1件 102| null | さささ | null --> 1件 103| null | null | たたた --> 1件 であれば、以下で出せます。 select NVL(field1,NVL(field2,field3)) field4, data1, data2, data3 (nvl(data1,0) + nvl(data2,0) + nvl(data3,0)) from XXX

somehow123
質問者

お礼

わかりづらくて申し訳ないです。 ですが、自己解決できました。