sql - SQL Server 2008 R2 在特定条件下选择特定行
问题描述
编辑:对不起,项目不应该是 A 和 B,它们都是 A。但是,当它们具有不同的 in_date 时,它们被认为是不同的。所以,我已经相应地编辑了我的问题。
我有个问题。见下表:
Item | In_Date | Qty_Balance | Created_At
-----+---------+-------------+---------------------------
A | 1 | 90 | 2018-09-26 16:09:26.523
A | 1 | 96 | 2018-09-26 15:26:12.507
A | 2 | 50 | 2018-09-26 15:24:43.617
A | 2 | 45 | 2018-09-24 15:47:40.977
如您所见,该表按列“Created_At”降序排列。现在,我需要的是获取“Qty_Balance”数据,但每个项目只输入最后一个。因此,对于 A,我需要获得 90 的“Qty_Balance”,而对于 B,我需要获得 50 的“Qty_Balance”。我们可以通过参考“Created_At”列来判断最后输入的数据,这就是为什么该列按降序排列。所以,为了清楚起见,我需要的是:
Item | In_Date | Qty_Balance | Created_At
-----+---------+-------------+-------------------------
A | 1 | 90 | 2018-09-26 16:09:26.523
A | 2 | 50 | 2018-09-26 15:24:43.617
我怎么可能做到这一点?请帮助我。先感谢您。
解决方案
您可以尝试使用ROW_NUMBER 窗口函数从 中创建一个组In_Date
,以创建行号order by Created_At DESC
,然后获取行号为1
行。
Select
Item ,
In_Date ,
Qty_Balance ,
Created_At
from (
SELECT *,ROW_NUMBER() OVER(PARTITION BY In_Date ORDER BY Created_At DESC) rn
FROM T
)t1
where rn = 1
笔记
ROW_NUMBER
函数生成行号。Window function
在应用关联的窗口函数之前确定行集的分区和排序。
推荐阅读
- javascript - 如何使用javascript获取多个单选按钮具有相同名称的选定单选按钮的值
- r - 具有最大值的条件格式 kableextra、组和颜色单元格
- python - 从不同的数据帧映射
- c++ - 不同节点上的 treeview 3-state 和 2-state 复选框
- spring-boot - 如何通过 SpringBoot 服务连接嵌入式 MsAcccess 数据库
- scala - 如何在 scala 中避免 com.typesafe.config.ConfigException$Missing
- wifi - 如何使用 NL80211_BSS_CAPABILITY 获取扫描网络的 WiFi 安全密钥(WPA、WPA2、ESS)?
- javascript - 在我的文件夹中找不到模块 (discord.js)
- flutter - 如何像 MX Player 那样检测颤动的音频文件夹?
- django-rest-framework - 通过 Celery 任务调用 DRF ViewSet