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

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

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

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

1回答

1070閲覧

【SQL】CASE文のWHEN句の中での条件の書き方がわからない。

Mr.sijimi

総合スコア21

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2022/02/22 10:29

編集2022/02/23 02:09

前提・実現したいこと

CASE文のWHEN句の中で
「別テーブルのSELECT文の結果が1件以上だった場合」
といったような条件を記載したいのですが、どう記載すればいいのかがわかりません。

SQL

1SELECT 2 CASE 3 WHEN ******* THEN *** 4 WHEN ******* THEN *** 5 ELSE NULL 6 END AS result

COUNT句を使った方法も試みたのですが、うまくいきませんでした。

SQL

1SELECT 2 DATA1, 3 CASE 4 WHEN (SELECT COUNT(DATA2 = '123456') FROM TABLE2)> 0 THEN '1件以上' 5 ELSE '0件' 6 END AS result 7FROM 8 TABLE1

どのように書いたら実現できるのでしょうか?

追記

02/23追記
結合条件は以下です。

TABLE1.DATA1 = TABLE2.DATA1

検索結果のイメージとしては、結合したテーブルのデータの中で、WHEN句のSELECTでヒットしたレコードのresult項目には'1件以上'、ヒットしなかったレコードのresult項目には'0件'と挿入し、表示させたいです。

使用するテーブルは以下です。
TABLE1

DATA1
ABCD
EFGH
IJKLM
NLOP

 
TABLE2

DATA1DATA2
ABCD123456
EFGH987654
IJKLM123456
NLOP876543

 
取得結果イメージは以下です。

DATA1result
ABCD1件以上
EFGH0件
IJKLM1件以上
NLOP0件

補足情報(FW/ツールのバージョンなど)

OS:Windows10
DB:PostgreSQL
使用ソフト:A5:SQL Mk-2 Version 2.16.0(x64 edition)

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

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

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

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

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

yambejp

2022/02/22 10:45

TABLE1自体はwhereで抽出していないですが大丈夫ですね?
nukasa

2022/02/22 11:01 編集

TABLE1とTABLE2の結合条件は? 二つめのSQLでは、resultは、DATA1の値に関係なく、常に同じ値になります。 TABLE1が100件あれば、DATA1は各行で異なりますが、resutlは同じ値が100行並びます。それでよいのですか。 欲しい出力結果のイメージを掲載してもらうと良いと思います。
Mr.sijimi

2022/02/23 02:09

yambejp様 今回は条件なしでのselectで実現を試みておりましたため、問題はないです。 nukasa様 各TABLEの結合条件と出力結果のイメージを追記いたしました。
guest

回答1

0

ベストアンサー

SQL

1SELECT DATA1, CASE WHEN COUNT(DATA2) = 0 THEN '0件' ELSE '1件以上' END result 2 FROM TABLE1 LEFT JOIN TABLE2 USING (DATA1) 3 WHERE DATA2 = '123456' 4 GROUP BY DATA1

投稿2022/02/23 02:21

nukasa

総合スコア406

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

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

Mr.sijimi

2022/02/23 05:02

ありがとうございます。 やりたいことが実現できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問