1

请参阅下面的示例,以更清楚地了解我在做什么。

例子:

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 则显示是。否则没有。并且不填充相同的值。

谢谢

4

1 回答 1

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')

因为它是相同的:

T.TESTPAPERID = '12345'
于 2011-11-18T09:41:18.473 回答