我在数据库中创建了一个视图。在这种情况下,分数可以为空。
SELECT Student.Name, Score.Score
FROM Student JOIN Score ON Student.StudentID = Score.StudentID
现在,我想添加一个名为" IfScoreIsNull"的列。根据此视图的分数值。如果Score为NOT NULL,则IfScoreIsNull将为0.否则,它将为1.
基本上,我希望布尔字段由Score列是否为空来驱动。
实现这一目标的最佳方法是什么?谢谢!
答案 0 :(得分:2)
您可以使用CASE expression。这些对于有条件地返回数据非常有用。这是一个例子:
CASE WHEN Score.Score IS NULL THEN 1 ELSE 0 END AS IfScoreIsNull
这将使您的完整陈述:
SELECT
Student.Name,
Score.Score,
CASE WHEN Score.Score IS NULL THEN 1 ELSE 0 END AS IfScoreIsNull
FROM
Student
INNER JOIN Score ON Student.StudentID = Score.StudentID
;
编辑:在我的原始答案中,我错误地将案例表达称为案例陈述。陈述是更常见的形式。许多语言都有这些,它们习惯于control flow。在SQL中我们有case表达式。它们返回基于布尔表达式的标量值。
答案 1 :(得分:2)
您可以在select
IIF(Score.Score IS NULL,1,0) AS IfScoreIsNUll
.....
中执行此操作。使用IIF
pandas.DataFrame
答案 2 :(得分:1)
SELECT
Student.Name,
Score.Score,
CASE WHEN Score.Score IS NULL THEN 1 ELSE 0 END AS IfScoreIsNUll
FROM Student JOIN Score ON Student.StudentID = Score.StudentID