• ベストアンサー

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

いつもお世話になって、大変助かっております。初心者なのですが、お相手ください。 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
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 特定のフィールドにデータが入ってる件数を調べたい

    ageというフィールドにデータが入っている件数を調べたいのですが、どのようなsql文を書けばいいでしょうか。 ageフィールドのNULLは「いいえ」、デフォルト値は「空欄」です。 $sql = "SELECT COUNT(*) AS cnt FROM table where 'age' is not null ;"; この文ではうまくいきませんでした。ageフィールドのデフォルト値をNULLにすればいいのでしょうか?

    • ベストアンサー
    • MySQL
  • 特定のフィールドにデータが入っている件数を表示したい

    ageというフィールドにデータが入っているものだけを抽出してその件数を表示したいのですが、どのようなsql文を書けばいいでしょうか? ageフィールドは、種別「varchar(255)」、NULL「いいえ」、デフォルト値「空欄」になっています。 $sql = "SELECT COUNT(*) AS cnt FROM table where 'age' is not null;"; これではうまくいきませんでした。ageのデフォルト値をNULLにすれば解決するのでしょうか?

    • ベストアンサー
    • MySQL
  • Access2003にてあるフィールドのデータ型を

    Access2003にてあるフィールドのデータ型を 『数値型:単精度浮動小数点型』にして書式を『固定(0.00)』 にしてデータ格納しているのですがExcelVBAでSQL(SELECT文)を使って抽出すると すごい桁数(小数点以下)で出てきます どのようにすれば小数点以下2桁でデータ取得できますか?

  • Access 複数フィールドにまたがる抽出条件

    Access2016で、クエリの抽出条件の設定に悩んでいます。解決策をご存知の方はご教示いただきますようお願い致します。 ★やりたいこと★ 【テーブル1】に以下のようなフィールドがあります。 [フィールドA] "製品a" "製品b" "製品c ..." のようなデータ群 [フィールドB] "00 "01" の2種類のデータ群 [フィールドC] "98" "99" の2種類のデータ群 フィールドBが "00" で、かつフィールドCが "98" に該当するデータのみを除外する抽出条件を設定したい。 ※フィールドBが "00" でフィールドCが "99" のようなデータは除外したくない SQLとかは使わず、初心者でも後から解読・編集できるような方法があればありがたいです。

  • アクセスのテーブルデータをCSV出力し、Nullフィールドは""にしたい場合

    こんばんは。 お世話になっております。 アクセスのテーブルのデータをcsvに吐きだすと、 "あ","い","う","え",,,"お","か" 以下のようにnullフィールドは""なしで,(カンマ)だけで区切られてしまいます。 これを,"",の形にしたいのですが、出力方法の設定等あるのでしょうか? ↓こういう形を "あ","い","う","え",,,"お","か" ↓このようにnullフィールドに""を付与したい "あ","い","う","え","","","お","か" ご存じの方いらっしゃいましたら是非とも教えて頂きたいと思います。 宜しくお願い致します。

  • BitフィールドにLOAD DATAできない

    以下の定義のテーブル(Bitフィールドを持つ)にLOAD DATAでデータを 入れようとしているのですがエラーになり困っています。 マニュアルにあるようにSET句を使用してLOADをしようとしているのですが 「You have an error in your SQL syntax;~」と コマンドの4行目のところで出てしまいます。どこがおかしいのでしょうか。 【テーブルの定義】 mysql> desc data; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | key1 | int(11) | NO | PRI | NULL | | | key2 | int(11) | NO | PRI | NULL | | | date | datetime | NO | PRI | NULL | | | flg1 | bit(1) | NO | | b'1' | | +-------+----------+------+-----+---------+-------+ 【CSVファイルの内容】 1,2,"2016-12-17 10:00:00",1 1,2,"2016-12-17 11:00:00",0 【コマンド】 LOAD DATA INFILE 'C:/csv/data.csv' INTO TABLE test.data (key1, key2, date, @var1) SET flg1 = CAST(@var1 AS SIGNED) FIELDS TERMINATED BY ',' ENCLOSED BY '"';

  • 複数フィールド対してLIKE '% %' したい

    SQL初心者なのですが、複数のフィールドをターゲットにしたフリーワード検索用のSQL文の書き方が解らず困っております。 例えば以下の様に"責任者"フィールドを限定して"田中"さんを探す事は出来るのですが、 ---------------------------------------------------------------- SELECT * FROM `会員表` WHERE 責任者 LIKE '%田中%' ---------------------------------------------------------------- 複数の、例えば以下の3つの ●責任者フィールド ●担当者フィールド ●顧客フィールド 全てを対象に一括で”田中”さんを検索したい場合、 どのように記述すれば良いのでしょうか? どなたか有識者の方いらっしゃいましたら宜しくお願いします!!

    • ベストアンサー
    • MySQL
  • オラクル10でフィールドが分かれたデータを1つのキーで検索したようにする

    オラクル10でフィールドが分かれたデータを1つのキーで検索したようにするにはどうしたらよいのでしょうか? 以下のようなテーブルがあり、氏名で検索したいのですが どのようなSQL文を書けばよいのでしょうか? 氏名=松本徹でレコードを抽出させたいです。 苗字|名前 --------- 岡田|武 松本|徹 池山|陽一

  • 回答フィールドのデータをリセットするには

    只今、問題と回答と集計する問題集のデータベースをAccess2002で作成しています。 会社では、バージョン2013になります。 バージョン2013では全く動作確認はしていませんが、基本骨格を自宅のバージョン2002で作成しています。 集計迄は、完了出来て、同じファイルで複数の人が使用して、一人の方の回答が終了したら全ての回答フィールドの答えをリセットする流れにしたいと思っています。 下記の方法で、試してみましたが、思い通りの動作になりません。 1.回答フィールド(回答1 回答2 回答3 回答4 回答5 の5つで、yes/no型のチェック方式)の削除クエリを作成して、データを削除できるかと思いましたが、問題まで削除されます。 2.ボタンに下記のコードで、回答フィールドの内容をリセットする。   Private Sub クリア_Click() Me.回答1 = Null Me.回答2 = Null Me.回答3 = Null Me.回答4 = Null Me.回答5 = Null End Sub この場合は、表タイプのフォームを作成して、先頭行をクリックして最終行迄ドラッグして選択したら全ての行の回答フィールドのレコードがリセット出来ると思いましたが、最初にクリックした行が有効となり選択が有効になっている行のみのデータがリセットとなります。 全ての問題に対しての全ての回答フィールドに入っているデータをボタンをクリックしてデータを一括でリセットする方法は有りますでしょうか? ご教授頂ければ幸いです。 宜しくお願い致します。

  • PostgreSQLのフィールドデータ型Intervalについて

    urizakaです JSP+PostgreSQLで登録のためのシステムを作成しているのですが、その中で入力された誕生日から現在の年齢を計算し、たまったデータから後で年齢検索(たとえば20歳~29歳)を行えるようにしたいと考え、Interval(正確にはInterval Year)というフィールドを使ってみたのですが、このフィールドに insert into exam(age) values(now() - '1999/12/31'); というようなSQL文を使ってデータを入れると    age ---------------------------- 949 days 12:59:22.1089999974 となります、今度はこのデータを年齢として取り出したいのですが、この状態からどうやって年齢を取り出して良いのかがわかりません。 select to_Char(age,'YY') from exam where code_ID =1 とSQL文を入力しても「00」という回答が帰ってきてしまいます。 どのようにすれば、ちゃんと年齢を返すようになるのでしょうか? すみませんが、ご存知の方がいらっしゃったら教えてください。 ちなみに、 update exam set age='20years' where code_id=1 とSQL文を入力すると「20years」と入力されることにヒントがありそうな気もするのですが・・・ 環境 OS:Windows2000    DB:PostgreSQL7.2.1(Windows-Native版) 言語:Java(J2SDK1.4) よろしくお願いします。