Sql 使用case-when语句创建视图
请参考我下面的例子,以便更清楚地了解我在做什么 例如:Sql 使用case-when语句创建视图,sql,oracle,select,case-when,create-view,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; 它成功地创建了视图。但是,它使用相同的值填充重复的行,
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,那么显示yes。否则为否,并且不填充相同的值
感谢您只有一行,请使用以下命令:
MAX(Case When T.TESTDATE = S.STUDYDATE Then 'Yes' else 'No' END)
...
GROUP BY <all other columns, which you haven't shown>
因为它与:
T.TESTPAPERID = '12345'
要仅包含一行,请使用以下命令:
MAX(Case When T.TESTDATE = S.STUDYDATE Then 'Yes' else 'No' END)
...
GROUP BY <all other columns, which you haven't shown>
因为它与:
T.TESTPAPERID = '12345'
为我的错误道歉。但该语句不会影响复制行的结果。虽然这看起来解决了问题,但在查询中使用分组或distinct(在不合适的情况下)通常会标记缺少连接条件或重复行。在向查询中添加分组之前,我会仔细了解数据模型。但那只是我。@MikeyByCrikey你是说我错过了一些连接条件,这让我有了重复的行?我已经从不同的表中加入了所有必需的属性。请为我的错误道歉。但该语句不会影响复制行的结果。虽然这看起来解决了问题,但在查询中使用分组或distinct(在不合适的情况下)通常会标记缺少连接条件或重复行。在向查询中添加分组之前,我会仔细了解数据模型。但那只是我。@MikeyByCrikey你是说我错过了一些连接条件,这让我有了重复的行?我已经从不同的表中连接了所有必需的属性。