Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 分组_Sql_Oracle - Fatal编程技术网

Sql 分组

Sql 分组,sql,oracle,Sql,Oracle,下表: +---+------------+-----------------------------+ | ID | A | B | C | +-----+------------+-------------+-------------+ | 1 | TRUE | FALSE | 123 | | 2 | FALSE | FALSE | 123 | |

下表:

+---+------------+-----------------------------+
|  ID |     A      |      B      |  C          |
+-----+------------+-------------+-------------+
| 1   | TRUE       | FALSE       |   123       |
| 2   | FALSE      | FALSE       |   123       |
| 3   | FALSE      | FALSE       |   123       |  
| 4   | FALSE      | FALSE       |   222       |
| 5   | TRUE       | FALSE       |   222       |  
| 6   | FALSE      | FALSE       |   222       |
| 7   | FALSE      | FALSE       |   333       |  
| 8   | FALSE      | TRUE        |   333       |
| 9   | FALSE      | TRUE        |   444       |  
| 10  | FALSE      | FALSE       |   444       |
+-----+------------+-------------+-------------+
  • 按C列分组此组中只能有一个TRUE,即A列或B列中的值-获取ID
  • 如果A中不存在TRUE值,则将B带到get ID
  • 此处所需的输出为:

    +-----+------------+-------------+-------------+
    |  ID |     A      |      B      |  C          |
    +-----+------------+-------------+-------------+
    | 1   |    TRUE    | FALSE       |   123       |
    | 5   |    TRUE    | FALSE       |   222       |
    | 8   |   FALSE    | TRUE        |   333       |
    | 9   |   FALSE    | TRUE        |   444       |  
    +-----+--------------------------+-------------+
    

    感谢您的帮助

    我想您希望实现
    a
    B
    之间的优先级。尝试
    不存在
    全部联合

    SELECT ID, A, B, C FROM your_table WHERE A = 'True'
    UNION ALL
    SELECT ID, A, B, C FROM your_table WHERE B = 'True' AND NOT EXISTS
       (
            SELECT 1 FROM your_table t2 WHERE t2.ID = ID AND A = 'True'
       )
    

    是否要显示
    A
    B
    'TRUE'
    的记录?这有什么困难

    select * from mytable where a = 'TRUE' or b = 'TRUE' order by c;
    

    你的代码在哪里!到目前为止,您尝试了什么?PL/SQL是一种编程语言。这和你的问题有什么关系?请改为标记您的DBMS(Oracle、PostgreSQL、MySQL等)。列数据类型?数据库管理系统?Oracle支持布尔值吗<代码>。。。其中a或b@jarlh:No,Oracle SQL不支持
    布尔值。并不是OP用Oracle标记了这个请求。我们不知道DBMS,也不知道这里的TRUE和FALSE是指布尔值还是字符串。我把它们理解为字符串,它在每个RDBMS中都可用:-)