2011-11-18 58 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