Создание представления со случаем, когда утверждение - PullRequest
1 голос
/ 18 ноября 2011

Пожалуйста, обратитесь к моему примеру ниже для более ясного понимания того, что я делаю.

Пример:

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, то показать да.В противном случае нет.И не заполнять одинаковые значения.

Спасибо

1 Ответ

4 голосов
/ 18 ноября 2011

Чтобы иметь только одну строку, используйте это:

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