Select row based on 2 column values

Michael M.M. D'Angelo 176 Reputation points
2023-02-08T14:05:03.7433333+00:00

Please I have this table that looks like the below(schema script in the post)

The table when selected will look like the below
I need to get the value in A(XCHGRATE) where my desired date falls between B(EXCHDATE) and C(EXPNDATE)
In this case my date is 2023-02-03 00:00:00.000

NOTE: The EXPNDATE is also the same as the XCHGRATE of the next row
User's image


CREATE TABLE [dbo].[MC00100](
	[EXGTBLID] [char](15) NOT NULL,
	[CURNCYID] [char](15) NOT NULL,
	[EXCHDATE] [datetime] NOT NULL,
	[TIME1] [datetime] NOT NULL,
	[XCHGRATE] [numeric](19, 7) NOT NULL,
	[EXPNDATE] [datetime] NOT NULL,
	[DEX_ROW_ID] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[MC00100] ON 
GO
INSERT [dbo].[MC00100] ([EXGTBLID], [CURNCYID], [EXCHDATE], [TIME1], [XCHGRATE], [EXPNDATE], [DEX_ROW_ID]) VALUES (N'GHSAVERAGE     ', N'GHS            ', CAST(N'2022-12-04T00:00:00.000' AS DateTime), CAST(N'1900-01-01T00:00:00.000' AS DateTime), CAST(14.1013000 AS Numeric(19, 7)), CAST(N'2022-12-11T00:00:00.000' AS DateTime), 3767)
GO
INSERT [dbo].[MC00100] ([EXGTBLID], [CURNCYID], [EXCHDATE], [TIME1], [XCHGRATE], [EXPNDATE], [DEX_ROW_ID]) VALUES (N'GHSAVERAGE     ', N'GHS            ', CAST(N'2022-12-25T00:00:00.000' AS DateTime), CAST(N'1900-01-01T00:00:00.000' AS DateTime), CAST(9.0540000 AS Numeric(19, 7)), CAST(N'2023-01-01T00:00:00.000' AS DateTime), 3793)
GO
INSERT [dbo].[MC00100] ([EXGTBLID], [CURNCYID], [EXCHDATE], [TIME1], [XCHGRATE], [EXPNDATE], [DEX_ROW_ID]) VALUES (N'GHSAVERAGE     ', N'GHS            ', CAST(N'2023-01-01T00:00:00.000' AS DateTime), CAST(N'1900-01-01T00:00:00.000' AS DateTime), CAST(9.9429000 AS Numeric(19, 7)), CAST(N'2023-01-08T00:00:00.000' AS DateTime), 3794)
GO
INSERT [dbo].[MC00100] ([EXGTBLID], [CURNCYID], [EXCHDATE], [TIME1], [XCHGRATE], [EXPNDATE], [DEX_ROW_ID]) VALUES (N'GHSAVERAGE     ', N'GHS            ', CAST(N'2023-01-08T00:00:00.000' AS DateTime), CAST(N'1900-01-01T00:00:00.000' AS DateTime), CAST(10.0355000 AS Numeric(19, 7)), CAST(N'2023-01-15T00:00:00.000' AS DateTime), 3806)
GO
INSERT [dbo].[MC00100] ([EXGTBLID], [CURNCYID], [EXCHDATE], [TIME1], [XCHGRATE], [EXPNDATE], [DEX_ROW_ID]) VALUES (N'GHSAVERAGE     ', N'GHS            ', CAST(N'2023-01-15T00:00:00.000' AS DateTime), CAST(N'1900-01-01T00:00:00.000' AS DateTime), CAST(10.9059000 AS Numeric(19, 7)), CAST(N'2023-01-22T00:00:00.000' AS DateTime), 3813)
GO
INSERT [dbo].[MC00100] ([EXGTBLID], [CURNCYID], [EXCHDATE], [TIME1], [XCHGRATE], [EXPNDATE], [DEX_ROW_ID]) VALUES (N'GHSAVERAGE     ', N'GHS            ', CAST(N'2023-01-22T00:00:00.000' AS DateTime), CAST(N'1900-01-01T00:00:00.000' AS DateTime), CAST(12.0767000 AS Numeric(19, 7)), CAST(N'2023-01-29T00:00:00.000' AS DateTime), 3820)
GO
INSERT [dbo].[MC00100] ([EXGTBLID], [CURNCYID], [EXCHDATE], [TIME1], [XCHGRATE], [EXPNDATE], [DEX_ROW_ID]) VALUES (N'GHSAVERAGE     ', N'GHS            ', CAST(N'2023-01-29T00:00:00.000' AS DateTime), CAST(N'1900-01-01T00:00:00.000' AS DateTime), CAST(12.2853000 AS Numeric(19, 7)), CAST(N'2023-02-05T00:00:00.000' AS DateTime), 3825)
GO
INSERT [dbo].[MC00100] ([EXGTBLID], [CURNCYID], [EXCHDATE], [TIME1], [XCHGRATE], [EXPNDATE], [DEX_ROW_ID]) VALUES (N'GHSAVERAGE     ', N'GHS            ', CAST(N'2022-12-18T00:00:00.000' AS DateTime), CAST(N'1900-01-01T00:00:00.000' AS DateTime), CAST(10.5461000 AS Numeric(19, 7)), CAST(N'2022-12-25T00:00:00.000' AS DateTime), 3782)
GO
INSERT [dbo].[MC00100] ([EXGTBLID], [CURNCYID], [EXCHDATE], [TIME1], [XCHGRATE], [EXPNDATE], [DEX_ROW_ID]) VALUES (N'GHSAVERAGE     ', N'GHS            ', CAST(N'2022-12-11T00:00:00.000' AS DateTime), CAST(N'1900-01-01T00:00:00.000' AS DateTime), CAST(13.1836000 AS Numeric(19, 7)), CAST(N'2022-12-18T00:00:00.000' AS DateTime), 3774)
GO
INSERT [dbo].[MC00100] ([EXGTBLID], [CURNCYID], [EXCHDATE], [TIME1], [XCHGRATE], [EXPNDATE], [DEX_ROW_ID]) VALUES (N'GHSAVERAGE     ', N'GHS            ', CAST(N'2023-02-05T00:00:00.000' AS DateTime), CAST(N'1900-01-01T00:00:00.000' AS DateTime), CAST(12.2045000 AS Numeric(19, 7)), CAST(N'2023-02-12T00:00:00.000' AS DateTime), 3834)
GO
SET IDENTITY_INSERT [dbo].[MC00100] OFF
GO
SET ANSI_PADDING ON
GO
/****** Object:  Index [PKMC00100]    Script Date: 08/02/2023 1:44:03 pm ******/
ALTER TABLE [dbo].[MC00100] ADD  CONSTRAINT [PKMC00100] PRIMARY KEY NONCLUSTERED 
(
	[EXGTBLID] ASC,
	[EXCHDATE] ASC,
	[TIME1] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
ALTER TABLE [dbo].[MC00100]  WITH CHECK ADD CHECK  ((datepart(hour,[EXCHDATE])=(0) AND datepart(minute,[EXCHDATE])=(0) AND datepart(second,[EXCHDATE])=(0) AND datepart(millisecond,[EXCHDATE])=(0)))
GO
ALTER TABLE [dbo].[MC00100]  WITH CHECK ADD CHECK  ((datepart(hour,[EXPNDATE])=(0) AND datepart(minute,[EXPNDATE])=(0) AND datepart(second,[EXPNDATE])=(0) AND datepart(millisecond,[EXPNDATE])=(0)))
GO
ALTER TABLE [dbo].[MC00100]  WITH CHECK ADD CHECK  ((datepart(day,[TIME1])=(1) AND datepart(month,[TIME1])=(1) AND datepart(year,[TIME1])=(1900)))
GO

SQL Server
SQL Server
A family of Microsoft relational database management and analysis systems for e-commerce, line-of-business, and data warehousing solutions.
12,808 questions
{count} votes

Accepted answer
  1. Jingyang Li 5,891 Reputation points
    2023-02-08T15:22:23.5033333+00:00

    This query?

    Declare @dt datetime= '2023-02-03 00:00:00.000'

    select [XCHGRATE] from [dbo].[MC00100]

    where @dt>=[EXCHDATE] and @dt<=[EXPNDATE]

    1 person found this answer helpful.

0 additional answers

Sort by: Most helpful