求不重复的字段并返回最新日期的SQL方法

简介: 有下面的一段原数据: KS_Date    KS_MetalName KS_TopLimit KS_BottomLimit KS_Average KS_Change 2011-12-14 00:00:00.

有下面的一段原数据:

KS_Date    KS_MetalName KS_TopLimit KS_BottomLimit KS_Average KS_Change
2011-12-14 00:00:00.000 a 100 10 55 54
2011-12-14 00:00:00.000 b 1 1 2 2
2011-12-14 00:00:00.000 c 1 1 10 1
2011-12-14 00:00:00.000 d 1 1 1 1
2011-12-14 00:00:00.000 e 1 1 1 1
2011-12-14 00:00:00.000 f 1 1 1 1
2011-12-14 00:00:00.000 g 1 1 1 1
2011-12-15 00:00:00.000 a 10 10 10 -45
2011-12-16 00:00:00.000 b 2 10 6 4
2011-12-16 00:00:00.000 c 2653 2001 2327 2317
2011-12-16 00:00:00.000 d 300 10 155 154
2011-12-16 00:00:00.000 e 200 100 150 149
2011-12-16 00:00:00.000 f 500 300 400 399
2011-12-16 00:00:00.000 g 5000 200 2600 2599
2011-12-23 00:00:00.000 a 20 10 15 5
2011-12-24 a 22 3 3 3
           
NULL NULL NULL NULL NULL NULL

1、求最新的日期并且KS_MetalName不重复

SELECT     MAX(KS_Date) AS 最新日期, KS_MetalName
FROM KS_U_SpotPrice
GROUP BY KS_MetalName

缺陷是无法返回多行记录,只能返回最多现行:KS_Date和KS_MetalName不能满足我们的要求

2、现在变通方法如下:

SELECT     KS_Date, KS_MetalName, KS_TopLimit, KS_BottomLimit, KS_Average, KS_Change
FROM KS_U_SpotPrice
WHERE (KS_Date IN
(SELECT MAX(KS_Date) AS AS最新日期
FROM KS_U_SpotPrice AS TempTable
GROUP BY KS_MetalName))
ORDER BY KS_MetalName

突然间发现上面这种方法也不能满足要求 ,但是下面的方法保证没有问题:

SELECT     ID, KS_Date, KS_MetalName, KS_TopLimit, KS_BottomLimit, did, username, userleavel
FROM test AS a
WHERE (KS_Date IN
(SELECT MAX(KS_Date) AS Expr1
FROM test AS b
WHERE (a.KS_MetalName = KS_MetalName)))
ORDER BY KS_MetalName


3、如果要是求今天最新的日期的返回值方法如下:

select KS_Date,KS_MetalName,KS_TopLimit,KS_BottomLimit,KS_Average,KS_Change
from KS_U_SpotPrice
where (DATEDIFF("d",KS_Date,GETDATE())=0)
order by KS_MetalName ASC



学习交流群:364976091
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
99 1
|
25天前
|
SQL 存储 BI
sql server 2012远程链接的方法及步骤
sql server 2012远程链接的方法及步骤
17 1
|
21天前
|
SQL
SQL语句两个字段或多个字段同时order by 排序
SQL语句两个字段或多个字段同时order by 排序
27 0
|
25天前
|
SQL 存储 Kubernetes
Seata常见问题之mybatisplus的批量插入方法报SQL错误如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
25 0
|
1月前
|
SQL 存储 关系型数据库
MySQL 常用30种SQL查询语句优化方法
MySQL 常用30种SQL查询语句优化方法
69 0
|
2月前
|
SQL JSON 关系型数据库
sql如何获取字段里的json值
sql如何获取字段里的json值
|
2月前
|
SQL
Sql语法:字段不为空
Sql语法:字段不为空
|
2月前
|
算法 关系型数据库 MySQL
浅谈postgre-sql uuid生成方法的细节
浅谈postgre-sql uuid生成方法的细节
23 0
|
3月前
|
SQL XML Java
关于mybatis-plus写自定义方法(自定义sql)
关于mybatis-plus写自定义方法(自定义sql)
71 1
|
3月前
|
SQL 关系型数据库 MySQL
MySQL优化:12种提升SQL执行效率的有效方法
在数据库管理和优化的世界里,MySQL作为一个流行的关系型数据库管理系统,其性能优化是任何数据密集型应用成功的关键。优化MySQL数据库不仅可以显著提高SQL查询的效率,还能确保数据的稳定性和可靠性。
163 0