sql-server - 选择表中的特定记录
问题描述
我在 SQL Server 中有两个表。第一个包含客户端列表,第二个包含每个客户端的活动列表。如何设置查询以仅选择每个客户的最后一个活动?
例如:
- Client1 有 Act1、Act2、Act3、Act4
- Client2 有 Act1、Act2
我想查看 Client1--->Act4 和 Client2--->Act2。
有办法做到这一点吗?
编辑:我在游标中合并了两个表,现在我遇到了这种情况(还有其他字段,但它们并不重要):
ID DATE
00001 25/04/2019 09.20
00001 30/04/2019 10.00
00002 23/04/2019 09.00
00002 29/04/2019 11.00
00003 NULL
我现在需要的是获得这个结果:
ID DATE
00001 30/04/2019 10.00
00002 29/04/2019 11.00
00003 NULL
我试过:
SELECT temp.* ;
FROM temp
WHERE TTOC(temp.date,1) IN (SELECT TTOC(MAX(t.date),1) FROM temp FULL OUTER JOIN t ON temp.ID == t.ID GROUP BY temp.ID)
其中 t 是合并前的两个原始表之一。它可以工作,但不会显示在 DATE 字段中没有任何信息的用户。有什么建议么?
解决方案
对于您的temp
桌子,您只需要group by id
:
SELECT id, max(date) lastact
FROM temp
GROUP BY id
如果您还想查看其他列:
SELECT t.*
FROM temp t LEFT JOIN (
SELECT id, max(date) lastact
FROM temp
GROUP BY id
) g on g.id = t.id and g.lastact = t.date
推荐阅读
- slack-api - usergroups.users.update 的权限被拒绝
- javascript - JavaScript 搜索功能未正确显示结果
- typescript - 向全局 Screen 添加新方法时无法满足 tslint 的要求
- swift - 在 TableView 中的 .Delete 之后更新行
- vba - vba - 复制到合并单元格不起作用
- visual-studio-code - Visual Studio 代码单引号错误
- javascript - 最初使用 Angular JS 将活动类添加到第一个 JSON 数据对象的导航链接
- javascript - 使用条件 if 在 mongodb 中检索单个文档
- angular - 如何使用单个 Observable 发送多个 Http 请求
- google-cloud-sql - 在 Google Cloud SQL 中,备份的隐私性是否不足?