質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.38%

  • Oracle

    714questions

    Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

ORACLE 集計関数を使って合計とIDを取得したい

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 182
退会済みユーザー

退会済みユーザー

コードをリファクタリングしているのですが現在のsqlはそれぞれの集計を取得するだけのsqlです

 SELECT 
 ,SUM(CASE WHEN TCM.YARD LIKE 'T%' THEN 1 ELSE 0 END) AS 東京
 ,SUM(CASE WHEN TCM.YARD LIKE 'N%' THEN 1 ELSE 0 END) AS 名古屋
 ,SUM(CASE WHEN TCM.YARD LIKE 'K%' THEN 1 ELSE 0 END) AS 神戸
 ,'=SUM(RC[-6]:RC[-1])' AS 合計
 FROM 
  T_CAR TC
  INNER JOIN T_CAR_MAIN TCM
    ON TC.ORDER_NO = TCM.IN_ORDER_NO
 WHERE 
   TRUNC(TCM.START_DATE) <= TO_DATE(2019/01/01)
   AND TRUNC(TCM.START_DATE) IS NOT NULL
   AND(
     TRUNC(TCM.END_DATE) >= TO_DATE(2019/02/01)
     OR TRUNC(TCM.END_DATE) IS NULL
   ) 


TCテーブルのIDカラムには01,02,03とidがありそのidも一緒に取得したいです。
どうしたらいいでしょうか。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • mts10806

    2019/02/14 14:41

    了解です。SQL自体は問題ないため、「絶対にダメ」というわけではありませんので。
    ちょっと気になったので聞いてみました。

    キャンセル

  • mts10806

    2019/02/14 14:42

    再現確認や調整もしたいので、
    各テーブルのCREATE TABLEとサンプルデータのINSERT文もあると助かります。

    キャンセル

  • Orlofsky

    2019/02/14 16:20

    Oracle SQL 入門程度の勉強をしないで、実務に入って破綻したシステムを何度も見ています。
    TO_DATE(2019/01/01)
        ↓
    TO_DATE('2019/01/01', 'YYYY/MM/DD')
    くらいは修正しましょう。
    質問にCREATE TABLE文と数件で良いからテーブルに存在するデータをINSERT文で提示ください。

    キャンセル

回答 2

checkベストアンサー

0

集計状態を変更せずに取り出すというなら、LISTAGGを使用します。

 SELECT 
  LISTAGG(ID) WITHIN GROUP (order by null) as concat_id
~ 以下省略

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/14 15:32

    From keywod not found where expectedというエラーになります

    キャンセル

  • 2019/02/14 15:37

    from句がありませんというエラーです。
    SQL文全体を見直して下さい。

    キャンセル

  • 2019/02/14 15:38

    そもそも質問のSQL自体エラーですし。

    キャンセル

0

select ID,sum(・・・・) from ・・・・ group by ID


ということでしょうか?
一般に集計とカラム内容の表示は競合するのでgroup byしない限り
表示はできません。

あとは具体的なサンプルとほしい結果を提示すれば追加で回答できるかも
しれません

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/14 15:33

    CREATE TABLE "CAR01"."T_CAR_MAIN"
    ( "TAKE_CARRY_NO" CHAR(8) NOT NULL ENABLE,
    "IN_ORDER_NO" CHAR(9),
    "YARD" VARCHAR2(20) NOT NULL ENABLE,
    "START_DATE" TIMESTAMP (6),
    "OUT_DATE" TIMESTAMP (6),
    "LAST_UPDATE_TIME" TIMESTAMP (6) NOT NULL ENABLE,
    "DELETE_FLG" CHAR(1) DEFAULT 0 NOT NULL ENABLE

    キャンセル

  • 2019/02/14 15:38

    T_CAR_MAINのYARDには東京、名古屋、神戸などが登録されていて現時点では日付で絞り込んで何月はどこでどれだけにお車両が登録されたかが集計されています。
    T_CARにあるIDの01の時だけselect文で取得した後にロジック内で別処理を行いたいのでidを持ってきたいです

    キャンセル

  • 2019/02/14 15:58

    create文やデータなどは質問に追記して下さい。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.38%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Oracle

    714questions

    Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。