首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Server数据库中获取最后一个值的列表,然后左转到一个视图

从Server数据库中获取最后一个值的列表,然后左转到一个视图
EN

Stack Overflow用户
提问于 2014-10-08 16:00:58
回答 1查看 109关注 0票数 1

有没有任何方法从数据库中获取最后一个值的列表?我有一个名为SessionList的表,列为StudId (SID)、Therapist ID (TID)、Date

我总共有5个孩子患有SID 1,2,3,4,5和10名治疗师,有TID 1,2,3.

现在所有的孩子都被分配到一个特定的治疗师那里。

因此,孩子1被分配给治疗师10,2被分配给治疗师5等等,当他们开始教他们的时候有一个约会。我可以在某一天为一个孩子换一个治疗师,例如,治疗师在一月和二月和第一个孩子在一起,现在他被重新分配给治疗师7,从3月开始。所以我有一份所有这些记录的清单。因此,一个孩子可以在桌子上有多个记录,而那个孩子的最后一张记录就是目前那个孩子的治疗师。

如何从桌子上提取所有孩子的最后记录的列表。如果我在DB中总共有12条记录,那么我的查询应该只获取5条记录,这些记录代表了数据库中那个孩子的最后一个条目。

我厌倦了用最后一个关键字。使用同一表上的联接。没起作用。

有任何方法可以创建视图并使用内/左连接来解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-08 16:56:02

一种方法是在Server 2005和更新版本中使用CTE (公共表表达式)(在这方面还不够具体)。

使用此CTE,您可以根据某些条件(即CustomerId )对数据进行分区,并让Server为每个“分区”从1开始对所有行进行编号,并按某些条件进行排序。

所以试着做这样的事情:

代码语言:javascript
复制
CREATE VIEW vw_CurrentTherapists 
AS
   WITH CurrentTherapist AS
   (
       SELECT 
          SID, TID, [Date],
          RowNum = ROW_NUMBER() OVER(PARTITION BY SID ORDER BY Date DESC) 
       FROM 
          dbo.SessionList
   )
   SELECT 
      SID, TID, [Date]
   FROM 
      CurrentTherapist
   WHERE
      RowNum = 1

在这里,我只为每个“分区”(即每个SID -每个孩子)选择“第一个”条目-按日期排序。

这接近你要找的东西吗??

PS:使用像Date这样的列名是非常糟糕的--首先,这并不能告诉我到底是哪种日期--而且,从Server 2008开始,DATE是一个保留关键字(用于数据类型)。尝试使您的列名更具表现力,更有意义,并避免所有Server保留关键字!(见SQL Server中保留关键字的正式MSDN文档)

我建议使用类似SessionDate (如果这意味着会话发生的日期),或者ValidFrom (如果它代表孩子/治疗师匹配的有效日期/就位日期)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26261363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档