首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >帮助编写针对需求的查询

帮助编写针对需求的查询
EN

Stack Overflow用户
提问于 2010-04-28 09:58:35
回答 4查看 221关注 0票数 2

我需要写一个SQL-Server查询,但我不知道如何解决。我有一个包含数据的表RealtimeData:

代码语言:javascript
复制
 Time                   |    Value
4/29/2009 12:00:00 AM   |   3672.0000
4/29/2009 12:01:00 AM   |   3645.0000
4/29/2009 12:02:00 AM   |   3677.0000
4/29/2009 12:03:00 AM   |   3634.0000
4/29/2009 12:04:00 AM   |   3676.0000      // is EOD of day "4/29/2009"
4/30/2009 12:00:00 AM   |   3671.0000
4/30/2009 12:01:00 AM   |   3643.0000
4/30/2009 12:02:00 AM   |   3672.0000
4/30/2009 12:03:00 AM   |   3634.0000
4/30/2009 12:04:00 AM   |   3632.0000
4/30/2009 12:05:00 AM   |   3672.0000      // is EOD of day "4/30/2009"
5/1/2009 12:00:00 AM    |   3673.0000
5/1/2009 12:01:00 AM    |   3642.0000
5/1/2009 12:02:00 AM    |   3672.0000
5/1/2009 12:03:00 AM    |   3634.0000
5/1/2009 12:04:00 AM    |   3635.0000      // is EOD of day "5/1/2009"

我想要获取表中存在的日期的EOD数据。(EOD =一天结束)。使用my sample的数据,我需要返回一个如下所示的表:

代码语言:javascript
复制
   Time      |    Value
4/29/2009    |  3676.0000
4/30/2009    |  3672.0000
5/1/2009     |  3635.0000

注意:我写这条评论是为了让你知道EOD在哪里。SQL Server的版本为2005。

注意: RealtimeData表中的数据量非常大,超过400.000行。请帮我写优化。

请帮我解决我的问题。谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-28 10:07:01

代码语言:javascript
复制
WITH RankedRealTimeData AS (
  SELECT *, ROW_NUMBER() OVER (
      PARTITION BY CONVERT(VARCHAR(10), [TIME], 121) 
      ORDER BY Time DESC) AS RN
  FROM RealTimeData
)
SELECT * FROM RankedRealTimeData WHERE RN=1;
票数 3
EN

Stack Overflow用户

发布于 2010-04-28 10:13:13

代码语言:javascript
复制
SELECT 
    CAST(Time as DATE) EodDate, 
    (
        SELECT  TOP 1
                Value
        FROM    RealtimeData I
        WHERE   CAST(I.Time AS Date) = CAST(O.Time AS Date)
        ORDER BY    Time DESC
    ) EodValue
FROM 
    RealtimeData O
GROUP BY CAST(Time as DATE)
ORDER BY CAST(Time as DATE)
票数 2
EN

Stack Overflow用户

发布于 2010-04-30 12:23:12

;With wcte as ( Select vTime,vValue,Row_Number() over (partition by Convert(DateTime,Convert(varchar(10),vTime,110)) order by vTime Desc) rno from @vTable )Select vTime,vValue from wcte where rno =1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2726369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档