2011-11-18 70 views
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则表明是肯定的。否则不。而不是填充相同的值。

感谢

回答

3

要只有一个排,使用此:

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' 
+0

为我的错误道歉。但是这种说法不会影响重复行的结果。 – JLearner

+0

你尝试过'MAX'吗?它应该工作 – Bohemian

+0

是有用的,我有它一起组。非常感谢! – JLearner