SQL (LibreOfficeBase) 如何在两列之间执行逻辑功能

问题描述

我正在尝试通过两列之间的比较来过滤表格。 例如,想象一下包含 TestPassed 列的 Student 表和包含测试要求的 Course 表。

鉴于以下观点:

id.Course id.Student     Course.Testrequired Student.TestPassed
1         66             True                True
2         66             False               True
...
99        52             True                False
100       32             False               False

我想通过在条件和学生的数据之间执行 NOT(XOR) 来过滤这样的表(即,既为真又为假)。结果将是:

id.Course id.Student        Course.Testrequired Student.TestPassed
1         66                True                True
2         52                False               True
69        32                False               False

sql 中可以吗? 我做了这样的事情。但是如何将其扩展到一般逻辑表达式?

SELECT "IdCourse","IdStudent","Testrequired","TestPassed",CASE WHEN "Testrequired" = "TestPassed" THEN 'YES'
       ELSE 'NO' 
       END AS Results
FROM "Filter_Partecipant_Course_byTestrequired"

解决方法

如果你只想选择不同的结果,猜测 WHERE 子句应该这样做:

Select IdCourse,IdStudent,TestRequired,TestPassed
FROM Filter_Partecipant_Course_byTestRequired
WHERE TestRequired <> TestPassed

这样,如果其中一个值为真,则另一个必须为假才能返回