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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Oracle Database 12c

Oracle Database 12cは、RDBMS製品です。世界初の商用RDBMSであるOracle Databaseのバージョンで、2013年にリリース。クラウド対応を考慮して設計されました。主な機能には、マルチテナント対応やインメモリデータベースの実装などがあります。

PL/SQL

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

2回答

912閲覧

SQL 特定の条件を満たす値を特定の値に加算したい

退会済みユーザー

退会済みユーザー

総合スコア0

Oracle Database 12c

Oracle Database 12cは、RDBMS製品です。世界初の商用RDBMSであるOracle Databaseのバージョンで、2013年にリリース。クラウド対応を考慮して設計されました。主な機能には、マルチテナント対応やインメモリデータベースの実装などがあります。

PL/SQL

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2019/06/06 00:00

編集2019/06/06 01:03

前提・実現したいこと

以下のようなテーブルで下記に表示する条件のselect文を作成したいと考えております。
sample1
|id|class|time|con1|con2|
|:--|:--:|--:|
|1|a|10|null|null|
|2|aa|20|1|1|
|3|b|10|null|null|
|4|ba|20|0|1|
|5|c|10|null|null|
|6|ca|10|0|0|
|6|da|10|1|1|

やりたいことと質問が異なっていたので追記させていただきます。

上記のような表で
条件に当てはまったものを以下のresultの列のように表示したいです。
con1 = 1 & con2=1 → a行のresultにaのtimeの値とそのほか条件に合致する値を加算し表示
con1 = 0 & con2=1 → b行のresultにbのtimeの値とそのほか条件に合致する値を加算し表示
con1 = 0 & con2=0 → c行のresultにcのtimeの値とそのほか条件に合致する値を加算し表示
以下が結果のテーブルとなります。
|id|class|time|con1|con2|result|
|:--|:--:|--:|
|1|a|10|null|null|40|
|2|aa|20|1|1||
|3|b|10|null|null|30|
|4|ba|20|0|1||
|5|c|10|null|null|15|
|6|ca|5|0|0||
|6|da|10|1|1||

以上、ご教示お願い致します。
追記しましたのでよろしくお願い致します。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Orlofsky

2019/06/06 01:00 編集

質問のテーブル定義はCREATE TABLE文とINSERT文と希望するSELECT結果で載せた方が適切なコメントが付き易いです。
Orlofsky

2019/06/06 01:01

「教授」は職業。「教示」の意味を調べて質問を直しましょう。
退会済みユーザー

退会済みユーザー

2019/06/06 01:04

語彙力が乏しく申し訳ございませんでした。
sazi

2019/06/06 01:10

「教授」は「教え授ける」、「教示」は「教え示す」。 ボリュームが全然違うので、「教えて下さい」の程度に「教授」を使用するのは不適当。
退会済みユーザー

退会済みユーザー

2019/06/06 01:15

教えてくださりありがとうございます。 Orlofskyさんのコメントにて修正いたしました、 以後気を付けます
Orlofsky

2019/06/06 01:33

本当は最初のコメントの方に気がついて欲しいところ。
guest

回答2

0

ベストアンサー

集計元が無い時(result=time + nullの時)はどうするか不明でしたので考慮していません。

SQL

1select sample1.* 2 , time + group_time as result 3from sample1 left join ( 4 select case 5 when con1=1 and con2=1 then 'a' 6 when con1=0 and con2=1 then 'b' 7 when con1=0 and con2=0 then 'c' 8 end as class 9 , sum(time) as group_time 10 from sample1 11 group by 12 case 13 when con1=1 and con2=1 then 'a' 14 when con1=0 and con2=1 then 'b' 15 when con1=0 and con2=0 then 'c' 16 end 17 ) class_sum 18 on sample1.class=class_sum.class

投稿2019/06/06 01:34

編集2019/06/06 06:29
sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/06/06 01:39

回答ありがとうございます。 質問の中の不適切な表現のご指摘などもありがとうございました。
guest

0

こういうことでいいのでしょうか?

SQL

1SELECT 2 id, 3 class, 4 time + (select time from sample1 where id = 1) as time, 5 con1, 6 con2 7FROM 8 sample1 9WHERE 10 con1 = 1 11AND con2 = 1 12AND id != 1
id class time con1 con2 -- ----- ---- ---- ---- 2 ab 30 1 1

投稿2019/06/06 00:13

izuminao

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問