Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6019991
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 23, 20262026-05-23T03:30:08+00:00 2026-05-23T03:30:08+00:00

I have the following three simple T-SQL queries. First one is to get records

  • 0

I have the following three simple T-SQL queries. First one is to get records within a range of boundaries (DATETIME type):

 SELECT value, timestamp 
 FROM myTable
 WHERE timestamp BETWEEN @startDT AND @endDT

the second one is to get the closest record to @startDT (DATETIME type)

 SELECT TOP 1
   value, timestamp
 FROM myTable
 WHERE timestamp > @startDT
 ORDER BY timestamp DESC

and the last one is to get the closest record after @endDT:

 SELECT TOP 1
   value, timestamp
 FROM myTable
 WHERE timestamp < @endDT
 ORDER BY timestamp ASC

I would like to get all the records of above three queries as one group of records. I tried to use UNION, but it seems that sub-queries within UNION does not allow ORDER BY clause. Is there efficient way to get my result?

 . .  * | * * * * * | * . . .
      start        end

The above graph simply shows the records of *s as my required records, and |…| is the boundaries.

By the way, the amount of data in myTable is huge. My understanding UNION is not an efficient way to get data from UNIONs. Any efficient way to get data without UNION?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-23T03:30:09+00:00Added an answer on May 23, 2026 at 3:30 am

    As you wish, without UNION.

    MySQL (TESTED)

    SELECT 
         dv1.timestamp, dv1.values
    FROM 
         myTable AS dv1
    WHERE 
        dv1.timestamp 
        BETWEEN (
               SELECT dv2.timestamp 
               FROM myTable AS dv2
               WHERE dv2.timestamp < '@START_DATE' 
               ORDER BY dv2.timestamp DESC 
               LIMIT 1
               )
        AND ( SELECT dv3.timestamp 
              FROM myTable AS dv3
              WHERE dv3.timestamp > '@END_DATE' 
              ORDER BY dv3.timestamp ASC 
              LIMIT 1
            )
    

    EDIT Sorry, I forgot to notice about T-SQL.

    T-SQL (NOT TESTED)

    SELECT 
         dv1.timestamp, dv1.values
    FROM 
         myTable AS dv1
    WHERE 
        dv1.timestamp 
        BETWEEN (
               SELECT TOP 1 dv2.timestamp 
               FROM myTable AS dv2
               WHERE dv2.timestamp >  @START_DATE 
               ORDER BY dv2.timestamp DESC
               )
        AND ( SELECT TOP 1 dv3.timestamp 
              FROM myTable AS dv3
              WHERE dv3.timestamp <  @END_DATE 
              ORDER BY dv3.timestamp ASC
            )
    

    Note If the result is not right, you could just exchange the sub queries (i.e. operators, and ASC/DESC).

    Think out of the box 🙂

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have the following template <h2>one</h2> <xsl:apply-templates select=one/> <h2>two</h2> <xsl:apply-templates select=two/> <h2>three</h2> <xsl:apply-templates select=three/>
If I have a comma separated file like the following: foo,bar,n ,a,bc,d one,two,three ,a,bc,d
I have a simple SQL table of the following format: date | value ============
Let's say I have the three following lists A1 A2 A3 B1 B2 C1
I have three images and using the following code I have then fade in
I have a calc function in java script that takes three integer parameters, following
I'm using Entity Framework 4.1 Code First. In my entity, I have three date/time
I need some help optimizing the following method. The queries have become too costly
I have the following situation: There is a tool that gets an XSLT from
I have the following 3 classes Book Product SpecialOptions There are many Books, and

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.