如何使用SQL语句从下面的数据中检索数据
我有一个表如何使用SQL语句从下面的数据中检索数据,sql,Sql,我有一个表TestTable,其中包含以下示例数据: |ID | Desc | CommentDate | qty | light +-----+---------+-----------------------------+-----+-------- | A11 | EYE | 2019-01-01 01:00:00.000 | 10 | 20 | A11 | WOMEN | 2019-01-01 05:00:00.000
TestTable
,其中包含以下示例数据:
|ID | Desc | CommentDate | qty | light
+-----+---------+-----------------------------+-----+--------
| A11 | EYE | 2019-01-01 01:00:00.000 | 10 | 20
| A11 | WOMEN | 2019-01-01 05:00:00.000 | 15 | 13
| A11 | SUG | 2019-01-02 00:00:00.000 | 10 | 20
| B11 | WOMEN | 2019-01-02 00:00:00.000 | 20 | 30
我试图从上面的TestTable
检索数据。我还没有得到实际的结果返回数据
如果ID
有多个注释日期,则从ID的组顶部日期中获取所有注释日期。
预期结果应低于预期
|ID | Desc | CommentDate | qty | light
+-----+---------+-----------------------------+-----+--------
| A11 | EYE | 2019-01-01 01:00:00.000 | 10 | 20
| A11 | WOMEN | 2019-01-01 05:00:00.000 | 15 | 13
| B11 | WOMEN | 2019-01-02 00:00:00.000 | 20 | 30
您可以尝试下面的SQL查询来获取结果集
;WITH CTE AS( SELECT [Id] ,[Desc] ,[CommentDate] ,[Qty],[Light] ,
DENSE_RANK() OVER (PARTITION BY [Desc] ORDER BY CONVERT(DATE, [CommentDate]) ASC) RN FROM TestTable )
SELECT * FROM CTE WHERE RN =1
此处按[CommentDate]排序ASC
将按CommentDate
的ASC顺序对结果进行排序如果您想要最后的日期记录,请在此处使用按[CommentDate]描述排序
现场测试:
输出:
RN ID Desc CommentDate qty light
1 A11 EYE 01/01/2019 01:00:00 10 20
1 A11 WOMEN 01/01/2019 05:00:00 15 13
1 B11 WOMEN 02/01/2019 00:00:00 20 30
这是什么数据库?谢谢你的回答,但还没有解决。有两种类型的ID,需要记录每个ID的顶部日期。应返回A11=>A11,EYE,2019-01-01和A11女性,2019-01-01和B11,女性,2019-01-02。不应返回A11,SUG,2019-01-02。
RN ID Desc CommentDate qty light
1 A11 EYE 01/01/2019 01:00:00 10 20
1 A11 WOMEN 01/01/2019 05:00:00 15 13
1 B11 WOMEN 02/01/2019 00:00:00 20 30