sql - 使用 T-SQL 从 SQL Server 获取最旧的记录
问题描述
我有一个 T-SQL 查询,我需要在其中找到最旧的日期记录。我是这样写的:
SELECT
T0.ItemCode, T0.OpenQty AS 'Qty', MIN(T1.DocDate) AS 'DocDate',
T1.DocNum, T1.CardCode, T1.SlpCode AS 'Sales Person', T0.WhsCode
FROM
RDR1 T0
INNER JOIN
ORDR T1 ON T0.DocEntry = T1.DocEntry
WHERE
T0.linestatus = 'O'
GROUP BY
T0.ItemCode, T0.OpenQty , T1.DocNum, T1.CardCode, T1.SlpCode , T0.WhsCode
但它没有返回最旧的日期记录。
数据显示在此屏幕截图中:
解决方案
您可以使用在内部查询中ROW_NUMBER()
通过升序对记录进行排名T1.DocDate
,然后在外部查询中选择最旧的:
Select *
From (
Select
T0.ItemCode,
T0.OpenQty as 'Qty',
T1.DocDate,
T1.DocNum,
T1.CardCode,
T1.SlpCode as 'Sales Person',
T0.WhsCode,
Row_Number() Over(Order By T1.DocDate) rn
From RDR1 T0
Inner Join ORDR T1 on T0.DocEntry = T1.DocEntry
Where T0.linestatus = 'O'
) x
Where rn = 1
这将为您提供表中最旧的记录。如果您需要获取每个组中最旧的记录,那么您可以PARTITION BY
在函数中添加一个子句ROW_NUMBER()
。
注意:这也假设它T1.DocDate
是类似日期的数据类型,通过查看您的示例数据,这似乎是(并且应该是)这种情况。
推荐阅读
- c++ - zsh/sh/bash 如何检查从 c++ 程序启动的命令“cat &”的信号 SIGTTIN
- telegram - 电报即时视图模板
- mysql - 我正在尝试从 pyspark 访问 mysql 表。我正在尝试使用:
- python-3.x - Beautiful Soup Login with Python 3 - 这个表单的 POST url 是什么?
- python - 有没有办法让熊猫从用户选择的 excel 表中构建数据框?
- javascript - 如何将多个文件选择放入一个数组中,然后输出到 HTML
- javascript - 运行应用程序时出现 Sequelize index has been exist 错误
- linux - 如何使用 find、ls 命令根据数组中的条目显示文件名?
- java - 使用 ADAL4J 的 OneDrive 身份验证
- python - Python - 解析 DAX 表达式并识别表和字段