Oracle

全3478件中21~40件表示
  • 単一グループのグループ関数ではありませんについて

    以下の様なテーブルがあります。 SOSHIKI_CODE SYAIN_CLS DEL_DATE A部 0 A部 1 B部 1 B部 2 C部 3 組織毎の社員クラスをカウントしたいのですが、 以下のSQLを実行すると ORA-00937: 単一グループのグループ関数ではありません。 のエラーがでます。 どこがいけないのでしょうか。 いけない理由が知りたいのですが。 また、どこを直せばよいのでしょうか。 select soshiki_code -- ,syain_cls ,max(decode(syain_cls,'0',count(*),NULL)) ,max(decode(syain_cls,'1',count(*),NULL)) ,max(decode(syain_cls,'2',count(*),NULL)) ,max(decode(syain_cls,'3',count(*),NULL)) from syain_mst where del_date is NULL group by soshiki_code ,syain_cls order by soshiki_code ;

  • 文字化けの解決方法

    Oracle12cR2のデータベースを構築中なのですが、あるSQLを実行したときだけSPOOLしたファイルの日本語が文字化けしてしまいます。 コマンドプロンプト上では日本語表示されているのですが、出力されたファイルのみに起こっているように見られます。 前後に実行しているSQLはコマンドプロンプト、SPOOLファイルともに日本語表示になっています。 SQLの実行結果自体に問題はないと思うので実害はないのだと思うのですが、エビデンスとしては直しておきたいところです。 どのような設定を確認すればよいでしょうか? SQLは以下の順で実行しています(添付ファイルの番号順) 1.DBFファイルを作成し、ALTERコマンドを実行(該当SQLの前に実行しているSQL) 2.実行SQLをまとめたSQLを実行(該当SQL) よろしくお願いします。

  • Oracleのupdate文について

    OracleでテーブルB、Cを結合し取得できた項目で、テーブルAを更新したいのですがSQLがわかりません。結合結果とテーブルAは1:1にはなりません。 件数が結合結果>テーブルAの時もあれば、その逆の場合もあります。また、複数項目を更新したいです。実行して考えてみたいのですが、明朝客先ですぐに実行しなければならず(テスト環境はあるので明日そこで一旦確認後、すぐに本番環境で実行)、現在移動中→ホテル泊のため余裕がありません。 ネットで下記を見つけたのですが、更新する項目に更新日時を追加したいのと、テーブルAとの紐付けやEXISTSのWHEREはテーブルBとC両方の項目に紐づけたいです。 また、テーブルAの更新条件に、テーブルB、Cにはないcolumn③に対する条件も追加したいです。 UPDATE [TABLE①] A SET (COLUMN①, COLUMN②) = ( SELECT B.COLUMN, C.COLUMN FROM [TABLE②] B, [TABLE③] C WHERE B.COLUMN = C.COLUMN AND B.COLUMN = A.COLUMN ) WHERE EXISTS ( SELECT 1 FROM [TABLE②] B2 WHERE B2.COLUMN = A.COLUMN) もろもろとわかりづらい説明&他力本願で心苦しいのですが、どなたか教えていただけないでしょうか?

  • 正規表現について教えてください。

    正規表現について教えてください。 以下の様なデータから末尾2文字が「01」を除くものだけを 取り出したいのですが、どのように書けばよいでしょうか。 ----------------------------- xxx01 xxx02 xxx11 xx100 xx101 xx201 ----------------------------- ※xには、0-9A-Zの何れかが設定 上記の例でいうと、 A0001:除外 A0002:出力 A0011:出力 A0100:出力 A0101:出力 A0201:出力 となります。 要は、 「A0001」は出したくないが、「A0101」、「A0201」、「A1001」などは出したいです。 末尾から3桁目が問題になるのではないかと思っています。 A[0-9][0-9]*[^1]') A[0-9][0-9]+[^1]') A[0-9][0-9][0-9][^1]') A[0-9][0-9][0-9]([^1]+)') A[0-9][0-9]([0-9]+|[0-9][^1])') A[0-9][0-9]([^0][0-9])([^1][0-9])') としてみたのですが、表示されません。 よろしくお願いします。

  • 正規表現について教えてください

    正規表現について教えてください。 「①:②:③:④」コロンで区切られた文字列があります。 コロンで区切られた文字列から各コロン間にある文字列を 条件に一致したものを取り出したいのですが 例:①:②:③:④ A000::: :01::: ::AA:: :::BB B001:A1:: B002:99:: C000::ABC01: C000:::BBB01 のように、①②③④の書き方は自由で、最低どこか一つに書かれていて、 ③と④は、両方同時にかかれません。 ここで、③と④のどちらかに入っているのをとりだしたいのですが、 どのように書けばよいでしょうか。 「'.*:.*:[^|:].*:[^|:].*'」としたらダメでした。 「'.*:.*:[^].*:[^].*'」でとりだせたのですが、正しい表現でしょうか。 また、指定したもの、③と④で、 例えば、Aで始まっている、Bで始まっているを 取り出したいのですが上手くいきません。 '.*:.*:[^](A|B).*.*:[^](A|B).*' '.*:.*:[^].*(A|B).*.*:[^].*(A|B).*' '.*:.*:(A|B)[^(A|B)].*:(A|B)[^(A|B)].*' としてみたのですが、表示されません。 お願いします。

  • VBAからoracleに接続しSQLで日付絞込み

    かなりの素人で申し訳ありません。初心者です。 EXCEL2016を使用し、VBAからoracleに接続、日付のカラムを範囲指定して検索、excelに出力するツールを作成しています。 テーブル:注文テーブル 項目:注文番号、項番、納期 納期は日付型です。 注文番号を指定してデータの取得はできているのですが、納期を指定すると「実行時エラー ODBCドライバーは要求されたプロパティをサポートしていません」とエラーになります。日付指定の方法が違うのではと推測するも解決しません。ご教授頂けないでしょうか。 SQL = “SELECT 注文番号, 項番, 納期 FROM 注文テーブル WHERE 納期 BETWEEN #2021/01/01# AND #2021/01/31#;”

  • TRUNCATEをかける際のバックアップ作成

    日次バッチ処理でDBの更新の際にTRUNCATEをかけてから更新する場合、バックアップの作成はどのタイミングが良いですか?

  • データベースのインデックスについて

    Oracleや PostgreSQLのデータベースを考えています。 年月日 時間 商品名 在庫状況 増減 20210115 9:00 A 100 0 20210115 10:00 A 95 -5 20210115 11:00 A 92 -3 20210115 12:00 A 94 2 テーブルについてはデータの件数が50万、1日1万件の増減のあるテーブルとなります。 照会の種類が2種類あるため、2つのインデックス(インデックス(1)、インデックス(2))を持つことを想定しています。 照会種類(1):20万件の照会/1日 [照会内容]最新の情報を知りたいためテーブルに登録された最新のデータを回答する照会 [データベースについて]データが登録される度にインデック(1)を作成 照会種類(2):5000件の照会/1日 [照会内容]朝9:00の時点のデータを回答 [データベースについて]データの件数を考え朝9:00にインデックス(2)を作成 データベースの知識が少ないため、これらの運用は可能か教えて下さい。 (特定のインデックスのみ更新するようなやり方はできるのでしょうか?あれば、何というデータベース用語的なやり方でしょうか)

  • Oracle移行

    現在Oracle 11gR2を使用されているクライアント様がいたとして、これから移行するとなれば19cが堅いですよね? 12cに比べ枯れてはいませんが、ほぼほぼ同じものですし、もう2021年を迎えるタイミングで12cに移行というのはないように思えますが、現場に出ていらっしゃる方々の肌感覚的にどう思われますか? ちなみにOracleは落ち目とか、ポスグレ、MySQL、SQL Server、DB2とか他に選択肢があるとかいうのはなしで、あくまでOracleに限定した場合の想定で、次移行するなら…という状況で皆さんのご意見?をお聞きさせて頂きたく思います。 宜しくお願い致します。

  • バックアップ

    1. フルバックアップ 2. 増分バックアップ 3. 差分バックアップ 4. 累積増分バックアップ 5. 差分増分バックアップ 6. 増分更新バックアップ これらをタンクの水や食べ物でも何でもいいので小学生にもわかるレベルでご解説頂けるかたはどうぞ宜しくお願い致します。

  • ORACLE のSQL について

    おはようございます。 ORACLEのSQLについて教えてください。 GROUP BY で抽出されたデータの レコード数を把握するSQLはどのようにすればよいのでようか。 ********************** 例: SQL: SELECT TEST_CD FROM TABLE GROUP BY TEST_CD 結果: 01 02 03 04 05 ********************** この結果のレコード(5レコード)のSQL式はどのようになりますか?

  • オラクルマスターについて

    こんにちは お世話になっております。 資格を持っている方(いない方でも)詳しい方。 難易度高めですが、オラクルマスターのプラチナは それほど価値はないでしょうか? ある人は合格して会社で優遇されています。 別の人(持ってない)大手メーカー系勤務の人が オラクルもっていても仕方ない みたいなことを言ってました。 就いている職務によって異なるでしょうけれど 実際のところどうですか?

  • Oracle Databaseについて

    おはよございます。 データベースアプリケーションを作成しようと思っています開発初心者です。 Windows10 ProマシンにOracle環境を作りたいのですが 無料のOracle DatabaseとOracle Clientはあるのでしょうか。 お手数おかけしますが、ご存知の方いらっしゃいましたら 教えてください。 よろしくお願いいたします。

  • TO_CLOBを使用するとデータが取れない

    DB:oracle10g DB使用文字コード: JA16SJIS SELECT文にて大量の項目を連結してデータを 取得したいと考えています。 (取得項目は全て固定長) その際、連結したデータが10000バイト となり、4000バイトを超えてしまうため、 TO_CLOBコマンドを使用してSQLを実行 したのですが、指定した項目情報が途中まで しか取得できておらず残りはset linesizeで指定 した10000バイトまで全てスペースとなって います。 また、取得項目に値が入っている事は確認 済みで、連結せずに1項目ずつ取得する SELECT文だと値が問題なく取れます。 データが途中までしか取れないという事象 はどのような原因が考えられるでしょうか? SELECT文 set pages 0 set linesize 10000 SELECT 項目1 || 項目2 || 項目3・・・|| 項目100 FROM テーブル名; 特定の項目以降値が取れなくなる。

  • Oracle SQLのSUBSTR関数について

    今授業でSUBSTR関数について習ったのですがイマイチ使い道、用途がわかりません。 お手数おかけしますがどう言った場合この巻数を用いるのかを教えていただきたいです。 よろしくお願いします。

  • セブンイレブンの7payの開発費が142億円だった

    セブンイレブンの7payの開発費が142億円だったそうです。 あのキャッシュレス決済システムのどこに142億円も掛かる部分があったのですか? ただデータベースから取り出して書き出すだけの単純なシステムですよね?

  • oracleのfunctionで戻り値複数個

    oracleのストアドプロシージャのファンクションについてですが、 ファンクションは、戻り値を返すことができますが、 それを、複数個返すことはできるのでしょうか。 CREATE [OR REPLACE] FUNCTION ファンクション名(引数 IN データ型[, ...]) RETURN 戻り値の型 IS 宣言部 BEGIN 処理部 END ; お願いします。

  • SQLでの条件分岐

    現在SQLの勉強をしているのですが、条件分岐の方法がわかりません。 全社員を登録したテーブルAと一部社員のみが登録されたテーブルBがあり、両テーブルを外部結合し、Bに登録されているかどうかでフラグを設定しています。 select A.*, B.*, NVL2(A.EMP_NO,'1','0') flag from A left outer join B on A.EMP_NO = B.EMP_NO and A.EMP_NAME = B.EMP_NAME ・上記SQLで設定したフラグの値をもとに、(1)Aのみに登録された社員、(2)Bのみに登録された社員、(3)両テーブルに登録された社員を出すためにはどのようにすれば宜しいでしょうか。 (2)、(3)に関しては、上記パターンならテーブルそのものを出せば済む話なのですが、今後のためにフラグから判定する方法でご教授お願いいたします。

    • ベストアンサー
    • 1452889
    • Oracle
    • 回答数1
  • ROWTYPEのINSERTが出来ません

    plsqlにてROWTYPEを使用したINSERTが出来ず困っています。 現在、以下のようなplsqlでROWTYPEのデータのINSERT処理をしようとしていますが、INSERTが出来ない状況となっています。 dbms_output.put_lineで確認するとINSERTしたいデータが存在していることは確認しています。 また、INSERT文をコメントアウトして実行すると、想定通りの回数のループ処理が 行われることも確認しています。 いまいち原因が分からず困っています。 DECLARE CURSOR zaiko_csr IS select * from zaiko_mst; zaiko_rec zaiko_mst%ROWTYPE; BEGIN OPEN zaiko_csr; LOOP FETCH zaiko_csr INTO zaiko_rec; EXIT WHEN zaiko_csr%NOTFOUND; insert into zaiko_bk(prd_cd, prd_nm, cnt) values(zaiko_rec.prd_cd, zaiko_rec.prd_nm, zaiko_rec.cnt); END LOOP; commit; close zaiko_csr; END;

  • oracleのsqlで日付判断

    テーブルに以下の以下の様に日付が登録されています。、 cal_year cal_month cal_day item1 item2 item3 ・・・・・・ : 2019 6 29 2019 6 30 2019 7 1 2019 7 2 ; 2019 7 10 2019 7 11 ; 2019 7 20 2019 7 21 : 2019 7 31 2019 8 1 2019 8 2 : 見ての通り、テーブルに登録されている日付が、年、月、日と各々で 登録されており、また、月と日には、ゼロ埋めされてない値となって います。 因みに、cal_year、cal_month、cal_dayの属性は、varchar2です。 以下のsqlで、日付指定で、システム日付より以降の日付のデータを 取得しようとしているのですが、上手く行きません。 select * from tableA where cal_year||cal_month||cal_day>to_char(sysdate,'FMYYYYMMDD') order by cal_year,to_number(cal_month),to_number(cal_day) ; 今日、2019/7/22でやると、「2019 7 3」以降が出力されます。 また、日付を直接指定するとエラーとなります。 select * from tableA where cal_year||cal_month||cal_day>to_char('2019722','FMYYYYMMDD') order by cal_year,to_number(cal_month),to_number(cal_day) ; 「SQL : ORA-01481: 数値書式モデルが無効です」となります。 何がいけないのでしょうか。 このような使い方はダメなのでしょうか。 それとも、使わない使い方をしているのでしょうか。 お願いいたします。