Sql Oracle在没有查询记录时如何填充数据

Sql Oracle在没有查询记录时如何填充数据,sql,oracle,Sql,Oracle,我想在PL/SQL中执行以下SQL select did, n1, n2 ,n3 from t where t.did in (‘A’,’C’,’G’) 结果将是“不重新编码” 我希望结果能是这样 我应该如何编写sql理想情况下,您应该有其他一些表来维护所有可能的did值。如果没有,我们可以在此处尝试使用CTE: WITH cte AS ( SELECT 'A' AS did FROM dual UNION ALL SELECT 'B' FROM dual UNIO

我想在PL/SQL中执行以下SQL

select did, n1,  n2 ,n3  
from t where t.did in (‘A’,’C’,’G’) 
结果将是“不重新编码”

我希望结果能是这样


我应该如何编写sql

理想情况下,您应该有其他一些表来维护所有可能的
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
值都有一条记录,那么您必须向我们提供其背后的逻辑