使用case语句创建视图

时间:2011-11-18 09:38:30

标签: sql oracle select case-when create-view

请参阅下面的示例,以便更清楚地了解我正在做的事情。

示例:

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 个答案:

答案 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'