我有一个带有"内部联接"的SELECT请求,联接表是位类型的列.

如果联接表中最多有一个值为1,我想 Select 1.如果不是这样,则该值将为0.

如果我有:

PERSID | NAME
1      |  Toto
2      |  Titi
3      |  Tata

第二张桌子呢

PERSID | BOOL
1      |  0
1      |  0
2      |  0
2      |  1

我想知道结果

Toto -> 0
Titi -> 1
Tata -> 0

我试试这个:

SELECT 
     sur.*
    ,MAX(bo.BOOL)    

    FROM SURNAME sur              
    INNER JOIN BOOL bo
    ON bo.IDPERS = sur.IDPERS

但MAX在BIT列中不可用..那我该怎么做呢?

谢谢

推荐答案

你可以把它打到INT,如果需要,甚至可以把它打回BIT

SELECT 
     sur.*
    ,CAST(MAX(CAST(bo.BOOL as INT)) AS BIT)
    FROM SURNAME sur              
    INNER JOIN BOOL bo
    ON bo.IDPERS = sur.IDPERS

Sql相关问答推荐

从依赖于其他表的值的XREF表中的值分组获得正确的计数?

冲突查询的UPDATE时违反非空约束

比较SQL中以逗号分隔的字符串

使用递归CTE在BigQuery中获取文件路径

从给定数据中查找下一个工作日期

如何在MS Access中基于另外两个表自动填充一个表中的字段?

配置单元查询失败:无法识别';附近的输入;LEFT'';(select子句中的';';col'

更改重复值的情况

根据标识符将两行合并为一行

将具有嵌套 XML 的列转换为 SQL 中的表格格式?

根据具有特定值的 ID 创建自定义组

列(值不为空)到其他有序列

SQL Server - 判断 ids 层次 struct 中的整数 (id)

按所选的值将记录分组到不同的列中

正则表达式忽略特定数据部分的分隔符

PostgreSQL - 从同一张表中获取值

检索具有相同位置的最小和最大store 数量

根据条件列出不同的值

BigQuery - 将 TIMESTAMP 转换为 HH:MM:SS,然后识别 TIME_DIFF

如何找到特定时间间隔内的最大和最小日期?