QA@IT
«回答へ戻る

回答を投稿

Oracleエラー番号もテーブル構造もわからないので何とも言えませんが、
TABLE テーブルに2件以上入っているとエラー(ORA-01427)になるかと思います。

SELECTでとってきた値が'1'のものを条件にしたいのですが

これを言葉通りにとらえれば、

SELECT
・・・
FROM
・・・
WHERE
(CASE WHEN A IS NOT NULL THEN '1' END)
・・・

な気がするんですが、
(とってきた値が'1'のものを条件にする = 条件は'1'な気がする)

そうではなくて、別のテーブル(TABLE)のある列の値が '1' の B列 の値を条件にしたいということですかね?
だとすれば、'1'は Bを持つテーブルと比較することになるでしょう。
比較対象が書いていないので右辺をどうしたいのかはわかりませんが、以下の様にしてみてはどうでしょう。

SELECT
・・・
FROM
・・・
WHERE
(CASE WHEN A IS NOT NULL THEN
    (SELECT B FROM TABLE where C = '1')
 END) = 比較対象
・・・

SQLの実行確認はしていません。

Oracleエラー番号もテーブル構造もわからないので何とも言えませんが、
TABLE テーブルに2件以上入っているとエラー(ORA-01427)になるかと思います。


> SELECTでとってきた値が'1'のものを条件にしたいのですが

これを言葉通りにとらえれば、

```
SELECT
・・・
FROM
・・・
WHERE
(CASE WHEN A IS NOT NULL THEN '1' END)
・・・
```
な気がするんですが、
(とってきた値が'1'のものを条件にする = 条件は'1'な気がする)


そうではなくて、別のテーブル(`TABLE`)のある列の値が '1' の B列 の値を条件にしたいということですかね?
だとすれば、'1'は Bを持つテーブルと比較することになるでしょう。
比較対象が書いていないので右辺をどうしたいのかはわかりませんが、以下の様にしてみてはどうでしょう。

```
SELECT
・・・
FROM
・・・
WHERE
(CASE WHEN A IS NOT NULL THEN
    (SELECT B FROM TABLE where C = '1')
 END) = 比較対象
・・・
```

SQLの実行確認はしていません。