使用 join 语句创建 case 表达式;甲骨文

Posted

技术标签:

【中文标题】使用 join 语句创建 case 表达式;甲骨文【英文标题】:Creating a case expression with a join statement; Oracle 【发布时间】:2018-05-06 21:35:05 【问题描述】:

我需要所有Library_ID 以是或否的形式返回。它们是 1、2 或 3,因此我需要将 1、2 或 3 的所有内容更改为是,将所有其他内容更改为否。到目前为止,这是我的声明:

SELECT DISTINCT 
    Title, Publisher, Release_Date, ISBN, l.Library_ID
FROM  
    Catalog_Item c
INNER JOIN 
    Book b ON c.Catalog_Item_ID = b.Catalog_Item_ID
INNER JOIN 
    Physical_Item p ON c.Catalog_Item_ID = p.Catalog_Item_ID
INNER JOIN 
    Branch br ON p.Branch_ID = br.BRranch_ID
INNER JOIN 
    Library l ON br.Library_ID = l.Library_ID
ORDER BY 
    Title;

现在我被卡住了。

【问题讨论】:

向我们展示数据库架构、示例数据、当前和预期输出。请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。 How to create a Minimal, Complete, and Verifiable example ***.com/q/177956/1531971 【参考方案1】:

就这么简单吗?

SELECT DISTINCT
    Title, Publisher, Release_Date, ISBN,
    case when l.Library_ID in (1,2,3) then 'Yes' else 'No' end as Library_ID
From ...

【讨论】:

【参考方案2】:

试试下面的CASE表达式:-

SELECT DISTINCT Title, Publisher, Release_Date, ISBN, l.Library_ID, CASE WHEN l.Library_ID IN (1,2,3) THEN 'YES' ELSE 'NO' END AS "YES_OR_NO" FROM Catalog_Item c INNER JOIN Book b ON c.Catalog_Item_ID = b.Catalog_Item_ID INNER JOIN Physical_Item p ON c.Catalog_Item_ID = p.Catalog_Item_ID INNER JOIN Branch br ON p.Branch_ID = br.BRranch_ID INNER JOIN Library l ON br.Library_ID = l.Library_ID ORDER BY Title;

【讨论】:

以上是关于使用 join 语句创建 case 表达式;甲骨文的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 JOIN 条件中使用 CASE 语句吗?

Redshift 中的 update + case + join 语句

在 case 语句中使用正则表达式提取动态内容

switch case 语句中的表达式

带有条件 CASE 语句的 SQL LEFT JOIN

JOIN 中的 SQL CASE 语句 - 当其他表中的值存在时