Sql Server Query not getting desire Result - sql-server-2008

I want show record month wise and date wise. My query is this but I am not getting how I can achieve this.
Query is
select
iWorkItemId
, convert(varchar(20),Progress.dtProgressDate,106) as dtProgressDate
, vsDescription
, WPD.rWeightage
, Progress.ProgressPerc as ProgressPerc
, Convert(decimal(6,2)
, ((WPD.rWeightage * Progress.ProgressPerc)/100)) as TotalProgress
from tblPkgWorkItems WPD
join tblPkgWorkItemsProgress Progress on WPD.iWorkItemId = Progress.iWorkItemsId
where iPackage='7'
group by iWorkItemId, dtProgressDate,vsDescription,rWeightage,ProgressPerc,progressmonth
order by progressmonth ASC,dtProgressDate ASC , iWorkItemId ASC
Column name : (1) progressmonth (Store Month Name)
(2) dtProgressDate (Store complete date)
Example :
In our table we are storing the records like in this manner:
30 Apr 2013
31 Aug 2013
28 Feb 2013
30 Jan 2013
Then I want to show records like this
30 Jan 2014
if some record is inserted in 15 jan 2014 then After 30 jan 2014 then 15 jan 2014 record will show.
28 Feb 2014
30 Apr 2014
30 Aug 2014
Means firstly Jan records will come then Feb record then March records.
Means all records will come month by order then sort by date wise .
My data is being returned like this:
iWorkItemId dtProgressDate progressmonth rWeightage
320 30 Apr 2014 Apr 2
321 20 Apr 2014 Apr 3
320 10 Feb 2014 Feb 4
321 9 Jan 2014 Jan 7
I want record should come first 9 jan 2014 then 10 Feb 2014 (Means Order by Month) then after it 30 April 2014, then 20 april 2014 (Then Sot by Date).
iWorkItemId will repeat win every month.
For my problem is I want to show
Firstly Jan records then Feb records , then March records
And whenever Jan month is coming then All Date which is belong to jan month that will come under JAN month.
Firstly Higher date of JAN month (Means ) 31 Jan 2014, 30 jan 2014, 29 jan 2014, 28 feb 2014, then 27 feb 2014.
Means first records fetch month wise then on particular month that records sort by datewise

Related

MySQL select multiple date range

I have a table with 2 dates: startDate and EndDate
I pass to my query 2 dates and I want to check if in this date range the offer are available.
I have an offer that is valid From 1 may 2019 to 30 may 2019.
When I search in offers, I want to show this only if the date range that I pass is included in the date range of the offer.
OFFER From 1 may 2019 to 30 may 2019
Value pass: 01 jan 2019 to 4 jan 2019 NO SHOW
Value pass: 28 april 2019 to 2 may 2019 NO SHOW
Value pass: 10 may 2019 to 12 may 2019 ONLY SHOW IN THIS CASE
Value pass: 29 may 2019 to 2 june 2019 NO SHOW
Value pass: 10 nov 2019 to 12 now 2019 NO SHOW
How can I do this?
This will work for MySQL.
date_from < '2019-10-05' AND date_to > '2019-10-12'

Mysql Order By month days

01-09-2016 01,September 2016 12
02-09-2016 02,September 2016 21
03-09-2016 03,September 2016 19
04-09-2016 04,September 2016 15
05-09-2016 05,September 2016 19
23-08-2016 23,August 2016 21
24-08-2016 24,August 2016 22
25-08-2016 25,August 2016 24
26-08-2016 26,August 2016 24
27-08-2016 27,August 2016 18
I want result like below
23-08-2016 23,August 2016 21
24-08-2016 24,August 2016 22
25-08-2016 25,August 2016 24
26-08-2016 26,August 2016 24
27-08-2016 27,August 2016 18
01-09-2016 01,September 2016 12
02-09-2016 02,September 2016 21
03-09-2016 03,September 2016 19
04-09-2016 04,September 2016 15
05-09-2016 05,September 2016 19
You should change the date format. Period.
The proper date format your database supports is chosen not by a whim but for the very reason of making the proper sorting and comparison possible.
Therefore, change your values format to 2016-09-01 and the field type to date. And you will never have not a single problem neither with sorting nor comparison nor any date conversions.

Area Booking System By Date Query For Maximum Area Availability within Date Range

Im trying to implement a simple area booking application by date
I record the booking requests
Total Area is constant: Assume 100sqft
Table:
req_made
startdate|enddate|area|storagename
Example:
01 Aug|__________________________________100_avail________________________|31 Aug
06 Aug|____________________________50_____________|25 Aug
05 Aug|____40__________|11 Aug
18 Aug|____30_______|23 Aug
13 Aug|_10_|16 Aug
My Request: 08 Aug|#######################|20 Aug
Answer=>Maximum possible within range 10
Area Free:
|-------100---||---10----------|-|-40-|50|-------20----|-50|--100--|
60 50
Same Diagram in written format (Picture)
My SQL Query Attempt:
SELECT (100-SUM(req_made.area)) AS area,req_made.storagename
FROM req_made
WHERE (req_made.enddate >= '2016-08-20' AND
req_made.startdate <= '2016-08-20')
OR(req_made.enddate>='2016-08-08' AND
req_made.startdate<= '2016-08-08')
OR(req_made.enddate<='2016-08-20' AND
req_made.startdate>= '2016-08-08')
GROUP BY req_made.storagename
Result
-30|my_storage
Expected
10|my_storage

Order one field both ASC and DESC

I've got a table with events that I'd like to show. I want to sort my events in the future ascending, and the past in descending order. How can I do this with one query?
My current order
Dec 23
Nov 10
Nov 04
Sep 12
Aug 01
Jul 23
The order I want
Nov 4 ** changed place
Nov 10
Dec 23 ** changed place
Sep 12
Aug 01
Jul 23
Many thanks in advance.
You are asking to sort by the distance from current date:
SELECT *
FROM table
ORDER BY IF(date_field >= NOW()),0,1), ABS(DATEDIFF(NOW(), date_field))

MS Access year to date numbers by month

I have a query in an Access database which returns the results below:
MthName 2010
Jan £4.51
Feb £10.20
Mar £17.51
Apr £22.86
May £28.82
Jun £33.30
Jul £37.96
Aug £42.52
Sep £47.88
Oct £54.25
Nov £60.52
Dec £65.80
That is fine but these are year to date numbers and I would like to create a query that could give me the actual month numbers instead.
Taking the above sample the Jan number is clearly £4.51 but the Feb number is
(£10.2-£4.51)= £5.70
I have tried using something like DLOOKUP but it seems that would be really slow and wasn't working correctly.
This can be achieved very easily in Excel but I was hoping to find a query for future use.
Thanks
Avoid using Dlookup as much as you can.
if it is possible to add column [mntNum] with SEQUENCE number of month :
mtnNum MthName 2010
01 Jan £4.51
02 Feb £10.20
03 Mar £17.51
04 Apr £22.86
05 May £28.82
06 Jun £33.30
07 Jul £37.96
08 Aug £42.52
09 Sep £47.88
10 Oct £54.25
11 Nov £60.52
12 Dec £65.80
Query
SELECT table.mntNum, table.mntName, table.[2010], [2010]-nz((SELECT [prev].[2010] FROM [table] as [prev] where [prev].[mntNum]=[table].[mntNum]-1),0) AS JUST_THIS_MONTH
FROM [table];
UPD:
Result of this query
mntNum mntName 2010 JUST_THIS_MONTH
1 Jan 4.51 4.51
2 Feb 10.2 5.69
3 Mar 17.51 7.31
4 apr 22.86 5.35
5 may 28.82 5.96
6 jun 33.3 4.48
7 jul 37.96 4.66
8 Aug 42.52 4.56
9 Sep 47.88 5.36
10 Oct 54.25 6.37
11 Nov 60.52 6.27
12 Dec 65.8 5.27999999999999