请参阅下面的示例,以便更清楚地了解我正在做的事情。
示例:
Create View v AS
Select T.*, S.Name, Case When T.TESTDATE = S.STUDYDATE
Then 'Yes' else 'No' END AS TakenTest
From Test T, Student S
Where T.TESTPAPERID = '12345'
And T.StudentNo = S.StudentNo;
成功创建视图。但是,它会使用相同的值填充重复行,如:
TESTPAPERID StudentNo Name TakenTest
12345 6437 John Yes
12345 6437 John No
我如何解决它,因为我已经定义了如果T.TESTDATE = S.STUDYDATE然后显示是。否则没有。而不是填充相同的值。
由于
答案 0 :(得分:4)
要只有一行,请使用:
MAX(Case When T.TESTDATE = S.STUDYDATE Then 'Yes' else 'No' END)
...
GROUP BY <all other columns, which you haven't shown>
此外,这部分编码很差:
T.TESTPAPERID = (Select TESTPAPERID From Student Where TESTPAPERID='12345')
因为它是IDENTICAL:
T.TESTPAPERID = '12345'