- ベストアンサー
同じデータが入ったフィールドをひとつに。
いつもお世話になって、大変助かっております。初心者なのですが、お相手ください。 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| たたた 一日中奮闘してみましたが、解決に至りませんでした。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
質問の内容の理解に苦しみますが・・・ 1レコード内に101と102が混在するって事は無いのですよね つまり、field1、field2、field3のNull以外を表示すればよいって事ですかね であれば単純に SELECT NVL(field1,NVL(field2,field3)) field4,data1,data2,data3 FROM ・・・ で問題あるのですかね?
その他の回答 (1)
- 3rd_001
- ベストアンサー率66% (115/174)
> さらにこの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
お礼
わかりづらくて申し訳ないです。 ですが、自己解決できました。
お礼
全て出来ました。 ありがとうございました。
補足
ありがとうございます! 思っていた通りの事ができました。 さらにこの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と出ます。やりたいこととしては件数を合計して出したいのですが。。 どうすればよろしいでしょうか。