Skip to content

Instantly share code, notes, and snippets.

@sergiogarciadev
Created May 15, 2014 19:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sergiogarciadev/275ec363070f2513b887 to your computer and use it in GitHub Desktop.
Save sergiogarciadev/275ec363070f2513b887 to your computer and use it in GitHub Desktop.
Sample SQL for stack overflow
CREATE TABLE [dbo].[AccountBalanceByDate]
(
[Id] int NOT NULL,
[AccountId] int NOT NULL,
[Date] [datetime] NOT NULL,
[Balance] [decimal](19, 5) NOT NULL,
PRIMARY KEY CLUSTERED
(
[Id] ASC
)
)
INSERT INTO [dbo].[AccountBalanceByDate] (Id, AccountId, Date, Balance) VALUES (1, 101, '2014-02-01', 1390)
INSERT INTO [dbo].[AccountBalanceByDate] (Id, AccountId, Date, Balance) VALUES (2, 102, '2014-02-01', 1360)
INSERT INTO [dbo].[AccountBalanceByDate] (Id, AccountId, Date, Balance) VALUES (3, 103, '2014-02-01', 1630)
INSERT INTO [dbo].[AccountBalanceByDate] (Id, AccountId, Date, Balance) VALUES (4, 102, '2014-02-02', 1370)
INSERT INTO [dbo].[AccountBalanceByDate] (Id, AccountId, Date, Balance) VALUES (5, 103, '2014-02-02', 1700)
INSERT INTO [dbo].[AccountBalanceByDate] (Id, AccountId, Date, Balance) VALUES (6, 101, '2014-02-03', 1490)
INSERT INTO [dbo].[AccountBalanceByDate] (Id, AccountId, Date, Balance) VALUES (7, 103, '2014-02-03', 1760)
INSERT INTO [dbo].[AccountBalanceByDate] (Id, AccountId, Date, Balance) VALUES (8, 101, '2014-02-04', 1530)
INSERT INTO [dbo].[AccountBalanceByDate] (Id, AccountId, Date, Balance) VALUES (9, 102, '2014-02-04', 1540)
DECLARE @p0 AS DATETIME
SET @p0 = '2014-02-01'
SELECT * FROM
[AccountBalanceByDate] AB
WHERE
DATE = (
SELECT
MAX(Date)
FROM
[AccountBalanceByDate]
WHERE
AccountId = AB.AccountId AND DATE < @p0
)
SET @p0 = '2014-02-02'
SELECT * FROM
[AccountBalanceByDate] AB
WHERE
DATE = (
SELECT
MAX(Date)
FROM
[AccountBalanceByDate]
WHERE
AccountId = AB.AccountId AND DATE < @p0
)
SET @p0 = '2014-02-03'
SELECT * FROM
[AccountBalanceByDate] AB
WHERE
DATE = (
SELECT
MAX(Date)
FROM
[AccountBalanceByDate]
WHERE
AccountId = AB.AccountId AND DATE < @p0
)
SET @p0 = '2014-02-04'
SELECT * FROM
[AccountBalanceByDate] AB
WHERE
DATE = (
SELECT
MAX(Date)
FROM
[AccountBalanceByDate]
WHERE
AccountId = AB.AccountId AND DATE < @p0
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment