Oracle Как заполнить данные, когда нет записи запроса - PullRequest
0 голосов
/ 01 марта 2019

Я хочу выполнить следующий SQL в PL / SQL

select did, n1,  n2 ,n3  
from t where t.did in (‘A’,’C’,’G’) 

результат будет «без перекодирования»

enter image description here

Я хотел бы, чтобы результат мог быть таким

enter image description here

как мне написать sql

1 Ответ

0 голосов
/ 01 марта 2019

В идеале у вас должна быть другая таблица, которая поддерживает все возможные значения did.В отсутствие этого мы можем попробовать использовать CTE здесь:

WITH cte AS (
    SELECT 'A' AS did FROM dual UNION ALL
    SELECT 'B' FROM dual UNION ALL
    SELECT 'C' FROM dual
)

SELECT
    t1.did,
    t2.n1,
    t2.n2,
    t3.n3
FROM cte t1
LEFT JOIN t t2
    ON t1.did = t2.did;

Конечно, это также означает, что если ваша таблица имеет больше , чем одна запись, соответствующая значению didчто ваш результирующий набор также будет иметь более одной записи для этого значения did.Если вы всегда ожидаете одну запись на did значение, то вам придется объяснить нам логику этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...