我有一个查询,其中列出了尚未通过评估的人,并希望添加一个列以显示他们是否尝试过。如果他们没有尝试过,则字段为null
,如果他们已尝试显示failed
。我已经从相关的评估表中显示了这一点,但是当一个人有一个failed
时,它也会在状态列中显示另一行没有任何内容(这是因为他们可以通过两个课程中的一个,所以可能有一个失败的记录而没有访问另一个)。我在主查询中使用select distinct
。我理解为什么我不能在某些列上使用distinct
,因为它不知道要显示哪些记录。
有什么办法可以在Visual Studio中使用SQL或表达式来合并两者,确保保留failed
状态?它只需要为了报告的利益而完成,因此无论它是否在Visual Studio中都无关紧要。
ID firstname surname lessonstatus
------------------------------------------
27 joe bloggs
47 mickey mouse
47 mickey mouse Failed
我希望它显示如下:
ID firstname surname lessonstatus
------------------------------------------
27 joe bloggs
47 mickey mouse Failed
在数据库中,米老鼠在数据库中两次,两次课程分别为一次,但为了本报告的目的,我不需要显示课程,我只需要在列表中显示一次因为没有通过他们中的任何一个。如果他们失败了,我想保留Failed
条目,以表明至少他们已尝试过这两门课程中的一门或另一门
答案 0 :(得分:1)
如果没有表格布局,很难回答,但假设你有一个带有stame结构的评估表,这应该可以解决问题:
SELECT ID, firstname, surname, MAX(lessonstatus) FROM(
SELECT * FROM assessment1
UNION
SELECT * FROM assessment2
) GROUP BY ID, firstname, surname
答案 1 :(得分:0)
这样的东西将提供你所需要的东西。
select p.name
, coalesce(a.value, 'no attempt') result
from person p left join assessment a on a.personId = p.personID
and a.value <> 'pass'
etc
当然,您需要自己的表名。此外,评估表上的所有过滤都必须在from子句中完成。如果在where子句中尝试它,则连接变为内部。