May 27, 2014 at 11:38 am
There is a table "Marketshare" which has fields say "startdate" and "rate". i need to sort the records of this table and have to take the top 1 latest record on 1 july of each year.
Was trying with Order by along with datepart() didn't able understand how to proceed.
MarketShare<table>
StartDate || Rate
-------------------
22/06/2014 234
28/06/2014 789
29/06/2014 987
02/07/2014 890
I need the first record which has start date before 1 july.
Result :
StartDate || Rate
---------------------
29/06/2014 987
May 27, 2014 at 12:23 pm
Please post your query with sample data and we can assist.
Jason...AKA CirqueDeSQLeil
_______________________________________________
I have given a name to my pain...MCM SQL Server, MVP
SQL RNNR
Posting Performance Based Questions - Gail Shaw[/url]
Learn Extended Events
May 27, 2014 at 12:24 pm
something like this help a little?
ORDER BY
CASE
WHEN datepart(mm,startdate) = 7
AND datepart(dd,startdate) = 1
THEN 1
ELSE 99
END
Lowell
May 27, 2014 at 1:10 pm
Hi ,
MarketShare<table>
StartDate || Rate
-------------------
22/06/2014 234
28/06/2014 789
29/06/2014 987
02/07/2014 890
i need latest start date record on july 1
Result :
StartDate || Rate
---------------------
29/06/2014 987
thanks in advance
May 27, 2014 at 1:13 pm
Something like this?
DECLARE @date = '20140701'
SELECT TOP 1 *
FROM MarketShare
WHERE StartDate <= @date
ORDER BY StartDate DESC
May 27, 2014 at 1:21 pm
Actually i am using this as a sub query inside my view, Declaring a date won't work because it should work for coming year records too..
May 27, 2014 at 1:25 pm
Here's a quick and dirty script that seems to get what you want.
SET DATEFORMAT DMY
DECLARE @MarketShare TABLE (startdate DATE, rate INT)
INSERT INTO @MarketShare
( startdate, rate )
VALUES (
'22/06/2014', 234),(
'28/06/2014', 789),(
'29/06/2014', 987),(
'02/07/2014', 890)
SELECT TOP 1 *
FROM @MarketShare
WHERE startdate <= '1/7/2014'
ORDER BY startdate DESC
Jason...AKA CirqueDeSQLeil
_______________________________________________
I have given a name to my pain...MCM SQL Server, MVP
SQL RNNR
Posting Performance Based Questions - Gail Shaw[/url]
Learn Extended Events
May 28, 2014 at 2:31 am
I achieved it proceeding like this
select startdate, case when startdate>=convert(datetime,'1 July '+convert(varchar,datepart(yyyy,GETDATE())))
then '1 Jan 1900' else startdate end Datecalc from MARKETSHARE order by Datecalc desc
anyway thanks all of you for providing me the idea to proceed
Viewing 8 posts - 1 through 7 (of 7 total)
You must be logged in to reply to this topic. Login to reply