[英]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.