我有一个在视图中的查询,因此不能使用order by。我有一个名为course的列,它是一个int列,可以有许多重复值。还有一个名为status的列,status列也是int,它将具有唯一的值。我正在尝试创建一个查询,在那里我们可以得到一个特定课程的最后一行,看看状态是否为2如果是,那么将1添加到@myvalue如果不是,那么将0添加到变量。我有一个id列,它是主键,没有顺序,但是我很难弄清楚这个。
myvalue是一个smallint,我们只需赋值
coursenumber是一个整数,一个表可以有许多(course)@coursenumber具有相同的数字
coursenumber和status只有一个组合。我们可以有许多课程编号相同,但每一个都有不同的状态
我想对下面的查询做的是获取@coursenumber的最后一条记录我们有一个id列,并检查@coursenumber的最后一条记录的状态是否等于2。如果等于2,则将值1赋给@myvalue;如果不等于2,则将值0赋给@myvalue。
SELECT @MyValue =(SELECT count(*) FROM MyTasks as MT WHERE MT.Course = @CourseNumber And MT.status=2)
示例:id课程状态
1 23 4
2 23 5
3 23 2
4 23 1
假设这是数据库表,course is[@coursenumber]是23。我们希望得到课程号的最后一行是[4],我们希望状态是[1],因为最后一行的状态不是2,我们只返回0,如果课程号的最后一行的状态是1,我们只返回1。这是视图内部的sql函数。我尽量省略一些可能不必要的东西,因为它是一个大视图和函数。
1条答案
按热度按时间ojsjcaue1#
您希望自联接到表以确定查找所需记录的最大id值。你说给@myvalue加1,然后你说设置@myvalue=1。这将给@myvalue加1。如果希望@myvalue=1,请更改case语句,删除@myvalue参数。