在 Oracle SQL 中使用复杂 IF 语句

2023-12-12

您好,我正在尝试在 Band 属性中编写 If 语句,但没有成功 T_T。我想做的是根据所有者类别、棚屋和供水属性设置单个角色 A、B、C、D。任何帮助都会很棒^^。

CREATE TABLE Rent_Band
(
    Plot_ID NUMBER(3),
    Band VARCHAR(1)
    IF SELECT * FROM Rent_Band WHERE Owner_Category = 'Council' AND WHERE Sheds ='No' THEN Band ='A'
    ELSE IF SELECT * FROM Rent_Band WHERE Owner_Category = 'Private' AND WHERE  Water_Supply ='Yes' THEN Band ='D'
    ELSE IF SELECT * FROM Rent_Band WHERE Owner_Category = 'Council' AND WHERE  Water_Supply ='No' AND WHERE Sheds ='Yes' THEN Band ='B'
    ELSE IF SELECT * FROM Rent_Band WHERE Owner_Category = 'Private' AND WHERE Water_Supply ='No' AND WHERE Sheds ='No' THEN Band ='B'
    ELSE THEN Band = 'C',
    Rent_Charge NUMBER(4), 
    Owner_Category VARCHAR(10) CONSTRAINT Checking_Owner_Category CHECK((Owner_Category='Private') OR (Owner_Category='Council')), 
    Sheds VARCHAR(3) CHECK((Sheds='Yes') OR (Sheds='No')), 
    Water_Supply VARCHAR(3) CHECK((Water_Supply='Yes') OR (Water_Supply='No'))
)

Read 文档在虚拟列上:

CREATE TABLE Rent_Band
(
    Plot_ID NUMBER(3),
    Band VARCHAR(1) AS
       (CASE WHEN Owner_Category = 'Council' AND Sheds ='No' THEN 'A'
            WHEN Owner_Category = 'Private' AND Water_Supply ='Yes' THEN 'D'
            WHEN Owner_Category = 'Council' AND Water_Supply ='No' AND Sheds ='Yes' THEN 'B'
            WHEN Owner_Category = 'Private' AND Water_Supply ='No' AND Sheds ='No' THEN 'B'
       ELSE 'C' END),
    Rent_Charge NUMBER(4), 
    Owner_Category VARCHAR(10) CONSTRAINT Checking_Owner_Category CHECK((Owner_Category='Private') OR (Owner_Category='Council')), 
    Sheds VARCHAR(3) CHECK((Sheds='Yes') OR (Sheds='No')), 
    Water_Supply VARCHAR(3) CHECK((Water_Supply='Yes') OR (Water_Supply='No'))
)

顺便说一句,我强烈推荐:

  • using a bit字段而不是Yes/No约束为Sheds and Water_Supply(节省空间和开销检查约束,并在大多数应用程序语言中直接转换为布尔值)
  • 使用查找表Owner_Category出于基本相同的原因而不是字符串约束
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Oracle SQL 中使用复杂 IF 语句 的相关文章

  • 将逗号分隔的主数据替换为列中的描述

    有 2 个 SQL Server 表 Products Name Status Code Product 1 1001 1003 Product 2 1001 1005 1006 Status Code Description 1001 S
  • pyspark.sql.functions.window 函数的“startTime”参数和 window.start 有何作用?

    示例如下 df spark createDataFrame 1 2017 05 15 23 12 26 2 5 1 2017 05 09 15 26 58 3 5 1 2017 05 18 15 26 58 3 6 2 2017 05 15
  • 处理大数据表时应该如何使用Hibernate Mapping

    问题定义 我有一个包含大量数据 超过 100 000 行 的数据库表 表结构如下 AppID DocID DocStatus 1 100 0 1 101 1 2 200 0 2 300 1 每个 applicationID 可能有数千个文档
  • PostgreSQL 窗口函数:row_number() over(按 col2 分区 col 顺序)

    以下结果集源自具有一些连接和联合的 SQL 查询 SQL 查询已经对 Date 和 game 上的行进行了分组 我需要一列来描述按日期列分区的游戏的尝试次数 Username Game ID Date johndoe1 Game 1 100
  • 在 SQL 中如何获得整数的最大值?

    我试图从 MySQL 数据库中找出整数 有符号或无符号 的最大值 有没有办法从数据库本身提取这些信息 是否有我可以使用的内置常量或函数 标准 SQL 或 MySQL 特定的 At http dev mysql com doc refman
  • IN 运算符对 SQL 查询性能的影响有多大?

    我的 SQL 查询需要 9 个小时才能执行 见下文 Select Field1 Field2 From A Where Field3 IN 45 unique values here 当我将此查询拆分为 3 个完全相同的查询 仅每个 IN
  • 内连接 3 个表

    我正在使用 PHP 和 PDO 我需要重新收集连接 3 个表的信息 photos albums 相册照片 该表具有以下结构 photos photo id int path varchar nick varchar date timesta
  • 如何获取Postgres当前的可用磁盘空间?

    在开始在数据库中进行某些工作之前 我需要确保至少有 1Gb 的可用磁盘空间 我正在寻找这样的东西 select pg get free disk space 是否可以 我在文档中没有找到任何相关内容 PG 9 3 操作系统 Linux Wi
  • 如何在“order by”中添加条件?

    我有一个带有输入参数的存储过程 现在根据这个参数 我的 order by 语句将发生变化 如果输入参数是 ID int类型列 则按ID排序 如果是 ProductType 则按产品类型排序 如果是 IssueDate 则应按问题日期排序 现
  • 如何删除MySQL中的所有事件

    如果我想删除某个事件 我需要查询类似的内容 DROP EVENT IF EXISTS eventname 但我找不到一次性删除所有事件的命令 必须一项一项地删除 有没有一次性删除所有事件的SQL DROP EVENT IF EXISTS S
  • 什么是 Oracle 会话?

    我使用的是 Oracle 11g 我正在寻找 Oracle 会话的良好解释 我用谷歌搜索了这个 但奇怪的是 没有一个网站包含任何关于预言机会话是什么的解释 我的具体问题是 1 什么是预言机会话 2 一个连接对象是否总是与一个 oracle
  • Postgres 按查询分组

    我正在尝试在 postgres 的查询中使用 group by 我无法让它按照我想要的方式工作 以便根据需要对结果进行分组 这是另一个堆栈问题的扩展我刚刚回答过的递归查询 https stackoverflow com questions
  • parent_id 是外键(自引用)并且为 null?

    浏览 Bill Karwin 的书 SQL Antipatterns 第 3 章 Naive Trees 邻接表 父子关系 有一个注释表的示例 CREATE TABLE Comments comment id SERIAL PRIMARY
  • 总结同一个 SQL 表上的两个条件

    给定一个 SQL 表 Transactions ID INT COMPANY ID INT STATUS INT where STATUS IN 0 1 表示免费交易并且STATUS IN 2 3 表示可计费交易 简单的 我希望 ANSI
  • Mysql UUID_SHORT() 与 UUID() 相当吗

    如果您愿意的话 请快速提出问题或意见 我需要为数据库表生成一些 UUID 自动递增密钥不会减少它 因为我还需要密钥在数据库和系统中保持唯一 UUID 工作正常 但其输出对于行将导出到的某些系统来说太长 UUID SHORT 做得很好 我已经
  • 如何处理多个连接

    我有一个复杂的查询 需要总共 4 个表中的字段 内部联接导致查询花费的时间比应有的时间长得多 我已经运行了一个 EXPLAIN 语句 其可视化结果附在下面 这是我的查询 SELECT pending corrections correcte
  • 如何选择从数据集中进入数据表的列?

    作为数据工作的新手 我希望我能正确地提出这个问题 如何选择从数据集中进入数据表的列 我知道我可以使用 填充数据表 DataTable table dataSet1 Tables 0 但这会引入所有列 如何仅使用某些列填充数据表 我正在使用
  • 使用 C# 和 ADO.NET SET NOCOUNT ON 并读取消息

    SET NOCOUNT ON 会阻止显示受 Transact SQL 语句或存储过程影响的行数的消息作为结果集的一部分返回 a 如何使用 C 和 ADO NET 读取这些消息 我假设读取这些消息的 C 代码是相同的 无论 T SQL 语句是
  • 在sql server中生成下一个序列号

    我需要生成一个序列号用作主键 在遗留系统中 我想知道以下解决方案在竞争条件下是否会遇到并发问题 CREATE TABLE SequenceGenerator Sequence INT INSERT INTO SequenceGenerato
  • SQLAlchemy:检查给定值是否在列表中

    问题 在 PostgreSQL 中 检查某个字段是否在给定列表中是使用IN操作员 SELECT FROM stars WHERE star type IN Nova Planet SQLAlchemy 的等价物是什么INSQL查询 我尝试过

随机推荐

  • Jupyter Notebook 中 pandas 数据帧的格式

    当我使用例如 Jupyter Notebook 在 Jupyter Notebook 中显示 pandas 数据框时df head 我得到的显示全是白色的列 然而 在一些网站上 我看到它们的格式是交替的白色和灰色行here 这可以在笔记本内
  • 如何定义属性来读取属性,而不实例化对象?

    假设我有 class Person ColumnAttribute ID public int Id ColumnAttribute Name public string Name ColumnAttribute DateOfBirth p
  • 在 SQL/Oracle 中查找一系列数字的范围

    我有一个包含一系列数字的表格1 2 3 4 5 11 12 13 14 15 101 102 103 104 105 510 511 512 513 515 516 517 我想要一个 SQL 查询 过程或函数 以便我可以获得以下格式的范围
  • 如何在 JavaScript 中检查参数是否是对象(而不是数组)

    测试出来后instasnceof我发现如果参数是数组或对象文字 它将返回 true function test options if options instanceof Object alert yes this will alert f
  • 使用 C# 将时间跨度值转换为格式“hh:mm Am/Pm”

    我有一个值存储在类型变量中System TimeSpan如下 System TimeSpan storedTime 03 00 00 我可以将它重新存储在另一个类型的变量中吗String如下 String displayValue 03 0
  • 在 Java 中向枚举添加斜杠

    我需要创建一个enumeration像这样 public enum STYLE ELEMENT1 0 A R 2 Staff But Java不允许这样做 有什么解决办法吗 谢谢 你不能使用 命名 Java 标识符 你可以看看 JLS 3
  • Firefox 中的表格充斥着 CSS

    我无法让我的桌子正常运转 内容不断溢出 我尝试限制它并没有产生预期的效果 这是我的标记 div class repeatingdiv div class hastitle Some title div div class hastable
  • ARM中Q(饱和标志)的重要性

    我想了解 Q 标志在 ARM 处理器中的重要性 我知道有一些指令 如 QADD QSUB 等 但我需要通过一些例子来理解这一点 以澄清这个概念 ARM 架构参考手册 ARM DDI 0100E 对此进行了解释 位 27 的CPSR is a
  • 有效地重塑稀疏矩阵,Python,SciPy 0.12

    In 另一篇关于在 SciPy 中调整稀疏矩阵大小的文章当要添加更多行或列时 接受的答案有效 使用scipy sparse vstack or hstack 分别 在 SciPy 0 12 中reshape or set shape方法还没
  • Python 中的整数除法和带负操作数的模运算

    当我在 Python 3 3 0 中输入这些表达式时出现问题 10 3 4 10 3 2 10 3 4 10 3 2 10 3 3 看起来好像它采用近似浮点 3 33 并在整数除法中以任一方式向下舍入 但在模运算中它会执行完全不同的操作 看
  • set-cookie 在响应标头中设置,但未显示在“应用程序”->“Cookies”中

    The front end spa is hosted in netlify and backend in heroku And sending the cookies in response header as shown in the
  • 进程完成,退出代码为 139(被信号 11:SIGSEGV 中断)

    我正在尝试执行Python脚本 但我收到以下错误 Process finished with exit code 139 interrupted by signal 11 SIGSEGV 我在 Linux Mint 18 1 Serena
  • 重复消除相似的公司名称

    我有一张包含公司名称的表格 由于人为输入错误 存在许多重复项 对于是否应包含细分 拼写错误等存在不同的看法 我希望所有这些重复项都被标记为一个公司 1c company 1c 1c company 1c game studios 1c wi
  • 在 Python 中将字符串解释为其他数据类型

    我正在将一个文件读入 python 2 4 其结构如下 field1 7 field2 Hello world field3 6 2 这个想法是将其解析成一个字典 该字典需要fieldfoo作为键 冒号后面的任何内容作为值 我想将冒号后面的
  • 如何将 repr 转换为编码字符串[重复]

    这个问题在这里已经有答案了 我有这个str 来自我无法修复的文件 In 131 s Out 131 xce xb8Oph 这接近于 utf8 编码的字符串的表示 In 132 repr Oph encode utf8 Out 132 b x
  • Hangfire 在每台服务器上重复执行作业

    我遇到的情况是 我需要使用hangfire 注册的重复作业才能在集群中的每台服务器上运行 工作是在本地复制一些文件 因此需要定期在每台服务器上运行 到目前为止 我已经尝试使用服务器名称的 id 注册相同的作业 从而为 n 个服务器生成 n
  • JDBC:抱怨无效符号,但看起来不错

    我必须使用 JDBC 写入数据库 hibernate ibatis 不是一个选项 我的数据库是 Oracle 11g 我创建以下查询 insert into user user id username age creation ts val
  • std::put_time 格式

    我想了解如何工作 std put time 以及如何获取 YYYY MM DD HH MM SS 格式的日期戳 现在我写这样的东西 std chrono time point
  • 将对象转换为数组的 PHP 错误

    我之前有过这个问题 最后得出的结论是这是 5 2 5 中的一个错误 好吧 它在 5 2 6 中仍然有问题 至少对我来说 请告诉我它是否损坏或对您有用 obj new stdClass obj gt foo bar obj gt 0 zero
  • 在 Oracle SQL 中使用复杂 IF 语句

    您好 我正在尝试在 Band 属性中编写 If 语句 但没有成功 T T 我想做的是根据所有者类别 棚屋和供水属性设置单个角色 A B C D 任何帮助都会很棒 CREATE TABLE Rent Band Plot ID NUMBER 3