如何从视图中的可空列中驱动布尔字段? (SQL Server)

时间:2015-12-16 16:51:25

标签: sql-server view

我在数据库中创建了一个视图。在这种情况下,分数可以为空。

SELECT Student.Name, Score.Score
FROM Student JOIN Score ON Student.StudentID = Score.StudentID

现在,我想添加一个名为" IfScoreIsNull"的列。根据此视图的分数值。如果Score为NOT NULL,则IfScoreIsNull将为0.否则,它将为1.

基本上,我希望布尔字段由Score列是否为空来驱动。

实现这一目标的最佳方法是什么?谢谢!

3 个答案:

答案 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