繁体   English   中英

合并来自两列SQL的布尔结果

[英]combining boolean results from two columns SQL

我有两个布尔列中的以下示例数据:

ID      Male      Female
1        1          0
2        0          1
3        0          1
4        1          0
5        0          1

我想将两列合并为一个仅包含“ M”和“ F”的列。 另外,我最好在定义列的同时在编写的SELECT语句中执行此操作。

结果应该是这样的:

ID     Gender
1        M
2        F
3        F
4        M
5        F

我知道我可以使用单独的更新语句来实现此目的,例如:

UPDATE table_1
SET Gender='M'
FROM table_2 t2
WHERE t2.Male=1

UPDATE table_1
SET Gender='F'
FROM table_2 t2
WHERE t2.Female=1

但是我真的希望在声明“性别”列时获得相同的结果吗?

有人知道这是否可能吗?

提前致谢!

您可以使用CASE表达式。

询问

UPDATE t1
SET t1.Gender = (
    CASE WHEN t2.Male = 1 AND t2.Female = 0 THEN 'M'
    WHEN t2.Male = 0 AND t2.Female = 1 THEN 'F'
    ELSE NULL END
)
FROM Table_1 t1
JOIN Table_2 t2
ON t1.ID = t2.ID;
UPDATE table_1
SET Gender= CASE WHEN Male = 1 THEN 'M'
                 WHEN Female = 1 THEN 'F'
                 ELSE 'Other' // optional
            END;

当然,我想保持开放的态度,并猜测您允许Male = 0 and Female = 0否则您可以使用IIF进行简化

UPDATE table_1
SET Gender = IIF ( Male = 1, 'M', 'F' );

这是使用SELECT语句的方法:

SELECT ID,
CASE WHEN Male = 1 THEN 'M'
ELSE 'F' END AS gender
FROM My_Table

如何select if(Male = 1, 'M', 'F') as gender呢?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM