求不重复的字段并返回最新日期的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
相关文章
|
13天前
|
SQL BI 数据库
SQL操作的一些基本方法
【10月更文挑战第27天】SQL操作的一些基本方法
27 3
|
13天前
|
SQL 监控 固态存储
SQL优化有哪些方法?
【10月更文挑战第27天】SQL优化有哪些方法?
13 3
|
1月前
|
SQL 存储 数据库
SQL部分字段编码设置技巧与方法
在SQL数据库管理中,设置字段的编码对于确保数据的正确存储和检索至关重要
|
27天前
|
SQL 数据库 索引
SQL语句实现投影连接:方法与技巧详解
在SQL数据库查询中,投影和连接是两个核心概念
|
27天前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
27天前
|
SQL 存储 Serverless
SQL语句拆分时间字段的技巧与方法
在数据库操作中,经常需要处理时间数据
|
27天前
|
SQL 监控 数据库
SQL语句是否都需要解析及其相关技巧和方法
在数据库管理中,SQL(结构化查询语言)语句的使用无处不在,它们负责数据的查询、插入、更新和删除等操作
|
27天前
|
SQL 安全 关系型数据库
SQL语句中表名通配符的使用技巧与方法
在SQL查询中,通配符通常用于匹配字符串数据,如列值中的部分字符
|
27天前
|
SQL 数据可视化 BI
SQL语句及查询结果解析:技巧与方法
在数据库管理和数据分析中,SQL语句扮演着至关重要的角色
|
27天前
|
SQL 数据库 索引
SQL语句实现投影连接:技巧与方法详解
在SQL数据库操作中,投影连接(Projection Join)是一种常见的数据查询技术,它结合了投影(Projection)和连接(Join)两种操作